Architecture

Where Your RDS Bill Really Goes — and How to Cut It

Cloud database bills grow quietly: oversized instances, over-provisioned storage, idle replicas and snapshots nobody deletes. Where to look first — and what you should not cut.

· 6 min read · AG Data Team

Managed databases are one of the largest lines on many AWS bills, and one of the least reviewed. Nobody decides to overspend: an instance is sized up during an incident and never sized back down, a staging environment is created as a copy of production, a manual snapshot is kept "just in case". Each decision is reasonable on its own. Together they add up.

This is where we look first when reviewing Amazon RDS and Aurora spend — and, just as important, what we leave alone.

1. Tune before you right-size

The most effective cost reduction is often a performance fix. If a handful of inefficient queries keep CPU at 70%, the instance looks correctly sized — until the queries are fixed and the same workload runs comfortably on a class or two smaller. Look at pg_stat_statements (or Performance Insights) before you look at instance classes.

2. Right-size the instances

Then look at CloudWatch over at least a few weeks, including peaks: CPU utilisation, freeable memory, and read and write IOPS. Instances that rarely exceed 20–30% CPU and have plenty of free memory are candidates for a smaller class. Also compare instance families: Graviton-based classes usually offer better price-performance than their x86 equivalents for PostgreSQL and MySQL workloads. Memory matters more than CPU for most databases, so don't downsize below the point where the working set no longer fits in cache.

3. Check storage type and size

4. Aurora: watch the I/O line

Aurora Standard charges separately for I/O requests, and for I/O-heavy workloads that line can rival the instance cost. Aurora I/O-Optimized removes per-request I/O charges in exchange for higher instance and storage prices; AWS's own guidance is that it tends to pay off when I/O makes up more than about a quarter of your Aurora spend. Check the split in Cost Explorer before choosing.

5. Non-production environments

Development, test and staging databases rarely need what production needs:

6. Replicas, snapshots and old versions

7. Commit only after you right-size

For steady workloads, reserved instances give substantial discounts over on-demand prices. Buy them last: committing for one or three years to an oversized instance locks in the waste.

What we deliberately do not cut: automated backups and their retention, Multi-AZ for production databases, and monitoring. These are the lines that look like overhead until the day they decide whether an incident lasts minutes or days.

Key takeaways

AWS Amazon RDS Aurora Cost Optimization
Work with us

Is your cloud database bill growing faster than your traffic?

Our cost review goes through instances, storage, replicas, snapshots and the queries behind them, and gives you a list of savings with the risk of each one spelled out.

Get in touch More from the blog