Explanation
Why the waste happens and who it affects.
For tables on the Standard table class, DynamoDB reserved capacity lets you commit to a minimum amount of provisioned throughput for one year, or three years in select Regions, in exchange for a large discount: AWS states savings of up to 54 percent off standard rates for a one-year term and 77 percent for a three-year term. Many organizations that run provisioned tables with a stable baseline never buy it, because it is purchased separately from compute commitments and is easy to overlook.
The opportunity is the steady floor of provisioned RCUs and WCUs that exists in every hour of the month, summed across tables in a Region, since reserved capacity applies Region-wide rather than to one table. It does not apply to on-demand tables, Standard-IA tables or replicated write capacity for global tables, and it cannot be cancelled, sold or moved, so sizing it above the durable floor turns a discount into waste. AWS Trusted Advisor and Cost Optimization Hub both provide DynamoDB reserved capacity purchase recommendations.
Billing model
The pricing dimensions that drive this cost.
- Provisioned capacity
- RCUs and WCUs billed per hour at standard provisioned rates for Standard table class tables
- Reserved capacity
- Bought in blocks of 100 RCUs or 100 WCUs with a one-time partial upfront payment plus a discounted hourly rate for the term
- Commitment obligation
- The entire reserved amount is billed for the full term whether or not it is used, and it cannot be cancelled or transferred
- Excess usage
- Provisioned capacity above the reserved amount is billed at standard provisioned rates
- Database Savings Plans
- A one-year spend commitment that also covers DynamoDB but cannot be combined with reserved capacity discounts on the same workload
How to detect
4 checks to find it in your estate.
- Review the Trusted Advisor check Amazon DynamoDB reserved capacity purchase recommendations and the DynamoDB reserved capacity recommendations in Cost Optimization Hub
- For each Region, sum ProvisionedReadCapacityUnits and ProvisionedWriteCapacityUnits (AWS/DynamoDB) across Standard table class tables in provisioned mode and find the minimum hourly level sustained over at least 30 days, including the effect of auto scaling
- Check existing reserved capacity purchases and their expiration dates, and whether Database Savings Plans already cover the same DynamoDB usage
- Exclude tables that are planned to move to on-demand mode, to Standard-IA, to a different Region or to be retired within the term
How to fix
4 ways to remove the waste.
- Purchase reserved capacity for the durable Region-wide floor of RCUs and WCUs, in 100-unit blocks, and leave peaks and auto-scaled capacity at standard provisioned rates
- Choose the one-year term unless the workload's footprint is clearly stable for three years and the Region offers the three-year term
- Where tables may change capacity mode, table class or database engine during the term, evaluate Database Savings Plans instead, since they are more flexible but cannot be stacked with reserved capacity on the same usage
- Right-size overprovisioned tables before buying, so the commitment is based on required capacity rather than current excess, and track utilization of purchased reserved capacity monthly
Documentation
Vendor references for pricing and configuration.