Why This Matters
RDS instances have premium managed service pricing, making oversizing especially expensive. Unlike EC2, RDS includes backup, patching, and monitoring costs, so rightsizing provides higher impact savings. Many databases are conservatively sized during migrations and never optimized.
Common causes:
- Conservative sizing during database migrations
- Over-provisioning for peak loads that rarely occur
- Legacy databases that haven't been optimized for current workloads
- Development databases using production-sized instances
How to Identify Oversized RDS Instances
AWS Saver flags RDS instances as oversized when they meet these criteria:
- CPU utilization under 20% averaged over 14 days
- Monthly cost above $50 (meaningful savings threshold for RDS)
- Instance status 'available' (running and accessible)
- Aged over 7 days (avoids flagging new deployments)
How to Fix Oversized RDS Instances
Step 1: List all available RDS instances
aws rds describe-db-instances \
--query 'DBInstances[?DBInstanceStatus==`available`].[DBInstanceIdentifier,DBInstanceClass,Engine,InstanceCreateTime]'
Step 2: Get CPU utilization over 14 days
aws cloudwatch get-metric-statistics \
--namespace AWS/RDS \
--metric-name CPUUtilization \
--dimensions Name=DBInstanceIdentifier,Value=your-db-instance \
--statistics Average \
--start-time $(date -u -d '14 days ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
--period 3600
Step 3: Create snapshot before modification
aws rds create-db-snapshot \
--db-instance-identifier your-db-instance \
--db-snapshot-identifier pre-resize-snapshot-$(date +%Y%m%d)
Step 4: Modify instance class (requires downtime)
aws rds modify-db-instance \
--db-instance-identifier your-db-instance \
--db-instance-class db.t3.medium \
--apply-immediately
Prevention Tips
Start with smaller instances: Begin with t3/t4g instances and scale up based on actual performance needs, not estimates.
Use Performance Insights: Enable AWS Performance Insights to monitor database workload patterns and resource utilization.
Monitor consistently: Set up CloudWatch alarms for CPU utilization above 80% to catch undersized instances quickly.
Regular reviews: Schedule quarterly RDS instance size reviews as part of cost optimization and performance tuning.
Automation Available
Skip the manual work. AWS Saver automatically analyzes RDS instances using the same 20% CPU and 14-day criteria.
✅ CPU utilization monitoring - Tracks average CPU over 14-day periods for statistical accuracy
✅ Cost-based filtering - Only flags instances above $50/month for meaningful savings
✅ Conservative thresholds - Focuses on instances aged over 7 days to avoid new deployments
✅ Instance class recommendations - Suggests optimal sizing based on actual usage patterns