Guides · RDS
An RDS bill has three main parts: instance hours, which depend on the DB instance class; provisioned storage; and backup storage beyond a free allowance. Multi-AZ doubles both the instance and the storage price. Most savings come from databases that are idle, larger than they need to be, or running Multi-AZ where nobody needs it. Commitments come last.
| Class | Single-AZ, per hour | Per month |
|---|---|---|
| db.t3.medium | $0.072 | $52.56 |
| db.t4g.medium | $0.065 | $47.45 |
| db.m5.large | $0.178 | $129.94 |
| db.m6g.large | $0.159 | $116.07 |
| db.m7g.large | $0.168 | $122.64 |
| db.m5.xlarge | $0.356 | $259.88 |
Multi-AZ prices are double: a Multi-AZ db.m5.large is $0.356 an hour ($259.88 a month). Monthly figures use AWS's 730-hour month. MySQL and other engines are priced differently.
A database with no connections for two weeks is often a leftover from a test or a retired service. Removing an idle db.m5.large saves $129.94 a month, or $259.88 if it's Multi-AZ. Check the DatabaseConnections metric:
aws cloudwatch get-metric-statistics --region us-east-1 --namespace AWS/RDS \
--metric-name DatabaseConnections --dimensions Name=DBInstanceIdentifier,Value=my-database \
--start-time 2026-09-19T00:00:00Z --end-time 2026-10-03T00:00:00Z \
--period 86400 --statistics Maximum --output table
If nobody needs it, delete it with a final snapshot. Stopping it isn't enough for long: RDS starts a stopped database again after seven days. See what a stopped database still costs.
A db.m5.xlarge costs twice as much as a db.m5.large, so moving down one size saves $129.94 a month. Pull 14 days of CPUUtilization the same way, with --statistics Average Maximum. CPU isn't the only constraint for a database: check FreeableMemory too, since databases use memory for caching.
Changing the DB instance class causes downtime. You can apply it immediately or in the next maintenance window.
Multi-AZ doubles the price of both the instance and its storage: $0.23 per GB-month instead of $0.115 for gp2 or gp3. Development and test databases rarely need it. Turning Multi-AZ off on a db.m5.large saves $129.94 a month. AWS lists no downtime for this change, but a possible performance impact.
A newer class of the same size is often cheaper. A db.m5.large ($0.178 an hour) on db.m6g.large ($0.159) saves $13.87 a month. Newer isn't always cheaper, though: db.m7g.large is $0.168, more than db.m6g.large. Check that your engine and version support the class before you switch. Changing class causes downtime, as above.
Unlike EBS volumes on EC2, RDS gp2 and gp3 storage have the same price in us-east-1: $0.115 per GB-month Single-AZ. Switching doesn't lower the storage line by itself. What changes is performance:
If storage was over-allocated on gp2 just to get IOPS, gp3 gives you that performance at a smaller size. But RDS can't shrink allocated storage: you can only increase it. To change the storage type: Modify → Storage type. AWS lists brief downtime only for changes to or from magnetic storage. You can't make another storage change until storage optimization finishes, and you can make at most four storage changes in 24 hours.
Backup storage is free up to 100% of your total database storage in a region. Beyond that, it's $0.095 per GB-month. A long backup retention period or a pile of manual snapshots can push you over. Manual snapshots and retained automated backups keep billing after the database is deleted, until you delete them. List manual snapshots, oldest first:
aws rds describe-db-snapshots --region us-east-1 --snapshot-type manual \
--query 'sort_by(DBSnapshots,&SnapshotCreateTime)[].[DBSnapshotIdentifier,DBInstanceIdentifier,AllocatedStorage,SnapshotCreateTime]' \
--output table
In Cost Explorer, grouped by Usage type, backup storage you pay for shows as RDS:ChargedBackupUsage.
Do these after the cleanup above, so you don't commit to capacity you're about to remove. AWS offers two kinds of commitment for RDS:
Compute Savings Plans don't cover RDS. They apply to EC2, Fargate and Lambda.
The free checkup finds this and 20 other kinds of issues automatically. It reads 14 days of CPU and connection data for every available RDS instance in the regions it scans. It flags databases with no connections in 14 days, and databases averaging under 10% CPU with no day above 30% (micro and small classes excluded), where it estimates one size down at half the price. It flags Multi-AZ on databases whose names look like development or test, and same-size t, m and r classes that are at least 5% cheaper. Each step is priced on what's left after the one before, so savings don't double count. It also reports AWS's own 1-year, No Upfront reserved instance recommendation for RDS. It also flags databases on versions in paid Extended Support (see RDS Extended Support). It doesn't check storage type, backups or snapshots, stopped databases or Database Savings Plans.
RDS:GP2-Storage and RDS:GP3-Storage $0.115, Multi-AZ $0.23, RDS:GP3-PIOPS $0.02 per IOPS-month, RDS:GP3-Throughput $0.08 per MiB/s-month, RDS:ChargedBackupUsage $0.095 per GB-month.Prices are AWS on-demand list prices for US East (N. Virginia), checked October 3, 2026. Other regions and engines differ, and licensed engines cost more.