This inefficiency occurs when an RDS instance is allocated significantly more storage than it consumes. For example, a 2TB volume might contain only 150GB of actual data. Since RDS does not allow reducing allocated storage on existing instances, these volumes continue to incur charges based on total provisioned size—not actual usage. This often goes unnoticed in long-running databases that no longer require their original allocation.
RDS storage is billed per GB-month of provisioned capacity. Charges apply whether or not the database actually uses the full allocated space. Storage type (e.g., gp2, gp3, io1) and optional features like Multi-AZ, backups, and snapshots may further influence the cost.
Since RDS does not support reducing storage size in-place, you must migrate the database to a new instance with smaller allocated storage. This can be done by restoring from a snapshot or using the DB engine’s native dump and restore utilities. For minimal downtime, consider using AWS Database Migration Service (DMS) to replicate data to a new instance. After migration, enable storage AutoScaling to allow future growth while minimizing overprovisioning. Ensure proper validation and cutover planning before decommissioning the original instance.