Skip to content

AWS RDS Cost Optimization: Save 30-60% on DBs

Twan Rooijakkers

Twan Rooijakkers

8 min read
Database management and optimization with structured data visualization

RDS is typically the second-largest AWS cost after EC2. The optimization challenge: databases are harder to rightsize than compute because downsizing risks performance degradation, and production databases feel risky to change. This leads to persistent over-provisioning — the average RDS instance runs at 20-40% utilization.

The saving opportunities are substantial. Graviton instances save 20%, Reserved Instances save 30-60%, and switching dev databases to Aurora Serverless v2 can save 50-70%. Combined, these strategies reduce database costs 30-60%.

TL;DR: RDS optimization priorities: (1) Graviton instances for 20% savings (db.r7g over db.r7i). (2) Reserved Instances for production databases running 24/7 (30-60% off). (3) Aurora Serverless v2 for dev/test and variable workloads (50-70% off). (4) Rightsize based on CloudWatch metrics (CPU, memory, connections). (5) Stop idle dev/staging databases. (6) Optimize storage — use gp3 over gp2, set appropriate IOPS.

RDS Cost Anatomy

ComponentTypical % of RDS BillOptimization Lever
Instance compute55-70%Rightsizing, Graviton, RIs
Storage (gp3/io2)10-20%Volume type, right-size capacity
I/O charges (Aurora Standard)5-20%I/O-Optimized mode
Backup storage3-5%Retention policy
Data transfer2-5%Read replicas in same AZ
Multi-AZ (standby)0-30%Only for production
Rds Cost Optimization Guide process flow diagram

Strategy 1: Graviton Instances (20% Savings)

Every RDS instance family has a Graviton equivalent. 20% cheaper with comparable or better performance.

Intel InstanceGraviton EquivalentMonthly Savings
db.r7i.large ($227/mo)db.r7g.large ($190/mo)$37
db.r7i.xlarge ($454/mo)db.r7g.xlarge ($380/mo)$74
db.r7i.2xlarge ($908/mo)db.r7g.2xlarge ($759/mo)$149

How: Modify the RDS instance, change to Graviton instance class. Apply during maintenance window. Minimal risk — same engine, same data, different CPU architecture.

Strategy 2: Reserved Instances for Production (30-60% Savings)

Production databases that run 24/7 should be reserved. RDS Reserved Instances provide significant savings:

TermPaymentSavings vs On-Demand
1-year No UpfrontMonthly payments~30%
1-year All UpfrontLump sum~40%
3-year All UpfrontLump sum~60%

Start conservative: 1-year No Upfront for production databases that have run for 3+ months and will continue. The 30% savings with no upfront commitment and easy exit make this a low-risk optimization.

When NOT to reserve: Databases that might be decommissioned, migrated to Aurora, or significantly resized in the next year.

Strategy 3: Aurora Serverless v2 for Variable Workloads (50-70% Savings)

Dev/staging databases and applications with variable query patterns waste money on provisioned instances. Aurora Serverless v2 scales compute to match demand.

ScenarioProvisioned (db.r7g.large)Serverless v2 (avg usage)Savings
Dev database (10% utilization)$190/month$44/month77%
Staging (25% utilization)$190/month$88/month54%
Variable production (40%)$190/month$135/month29%

Rule of thumb: If database utilization averages under 40%, Serverless v2 is cheaper.

Strategy 4: Rightsize Based on Metrics

Check CloudWatch for these RDS metrics over 14+ days:

MetricOver-Provisioned SignalAction
CPUUtilizationUnder 30% averageDownsize one tier
FreeableMemoryOver 60% of totalConsider smaller instance
DatabaseConnectionsUnder 20% of maxMay not need current size
ReadIOPS/WriteIOPSConsistently lowMay not need io2 storage

Rightsize approach: Downsize one tier at a time. Monitor for 2 weeks. If performance is acceptable, consider downsizing again.

Strategy 5: Stop Idle Databases

Dev and staging databases running 24/7 with zero connections during nights and weekends waste 65% of their compute cost.

Options:

  • Stop manually — RDS allows stopping instances for up to 7 days (auto-restarts after 7 days)
  • Aurora Serverless v2 — Scales to minimum 0.5 ACU ($44/month) during idle periods
  • Snapshot and restore — For databases needed only occasionally, snapshot, delete, and restore when needed

Strategy 6: Optimize Storage

Switch gp2 to gp3

Every gp2 volume should be gp3. No downtime required. 20% cheaper with better baseline performance (3,000 IOPS and 125 MiB/s included).

Right-Size Storage Allocation

RDS storage auto-scaling can grow volumes but never shrinks them. Periodically review:

  • Is allocated storage significantly more than used storage?
  • For Aurora: storage is billed per GB used (no over-allocation waste)

Choose the Right Storage Type

Storage TypeCostBest For
gp3$0.08/GB/mo + IOPS above 3KMost workloads
io2$0.125/GB/mo + $0.065/IOPSHigh-performance OLTP
Aurora Standard$0.10/GB/mo + I/O chargesLow-medium I/O workloads
Aurora I/O-Optimized$0.225/GB/mo, no I/O chargesHigh-I/O workloads

Strategy 7: Optimize Multi-AZ and Read Replicas

Multi-AZ: Doubles compute cost for a standby replica. Required for production (high availability). Not needed for dev/staging — disable it.

Read replicas: Can offload reads from the primary, but each replica costs the same as an additional instance. Only add read replicas when the primary can't handle read traffic, not as a default.

Right-size replicas independently: A read replica doesn't need to match the primary instance size. If reads are lighter, use a smaller instance.

Aurora-Specific Optimizations

I/O-Optimized vs Standard

Aurora charges $0.20/million I/O operations on Standard. For read-heavy workloads, this adds up fast:

Monthly I/O VolumeI/O Cost (Standard)Switch to I/O-Optimized?
100M$20No (under 25% of compute)
1B$200Maybe (check vs compute cost)
5B$1,000Yes (exceeds compute cost)

Rule: If I/O charges exceed 25% of your compute charges, switch to I/O-Optimized. You pay 30% more for compute and 125% more for storage, but I/O is free.

Aurora Global Database

Charges for cross-region replication. Only use for multi-region applications that require sub-second read latency globally. Not needed for disaster recovery alone — standard Aurora backups to S3 are sufficient for most DR requirements.

Rds Cost Optimization Guide optimization checklist

Frequently Asked Questions

How much can I save on RDS?

Most organizations save 30-60% through systematic optimization: 20% from Graviton migration, 30-60% from Reserved Instances on production, 50-70% from Aurora Serverless v2 on dev/test, and 10-20% from rightsizing. The combined effect depends on your current waste level.

Should I use RDS or Aurora?

Aurora costs about 20% more for compute but includes built-in high availability, faster failover, and distributed storage. For production databases requiring high availability, Aurora's total cost is often comparable to RDS Multi-AZ. For simple dev/test databases, standard RDS is cheaper.

When should I buy RDS Reserved Instances?

When a production database has run for 3+ months and you expect it to continue for at least 12 more months. Start with 1-year No Upfront for flexibility. Apply to your largest databases first for maximum savings.

How do I handle RDS for dev/test?

Three options ranked by cost: (1) Aurora Serverless v2 — scales to near-zero during idle time. (2) Smallest RDS instance stopped outside business hours. (3) RDS on smallest instance running 24/7. Option 1 is usually cheapest for databases used intermittently.

Rds Cost Optimization Guide key statistics

Optimize Your Database Costs

Database optimization is high-impact because databases run 24/7 and represent 15-25% of most AWS bills:

  1. Graviton first — 20% savings, minimal risk, immediate impact
  2. Reserve production — 30-60% off your largest, most stable databases
  3. Serverless for dev — Stop paying full price for idle databases
  4. Rightsize actively — Check metrics quarterly, downsize when over-provisioned
  5. Optimize Aurora I/O — Switch to I/O-Optimized if I/O charges exceed 25% of compute

See what you'd save.

Read-only access. Zero switching cost. Skip the sales queue, talk directly to our founder.

Free savings analysis · No credit card · No obligation