DynamoDB Capacity Mode Advisor · guide
Short answer: provisioned wins for steady tables, on-demand wins for idle or spiky ones, and the crossover is about 29% average utilisation. The rest of this page shows where that number comes from and how to check your own table in ten minutes.
On-demand charges per request unit actually consumed: about $0.125 per million read request units and $0.625 per million write request units at us-east-1 standard-table list prices. Nothing is charged while the table is idle.
Provisioned charges per capacity unit per hour whether you use it or not: about $0.00013 per RCU-hour and $0.00065 per WCU-hour. One RCU-hour can serve 3,600 read units. The same 3,600 units on-demand cost $0.00045, so provisioned costs 29% as much if the unit is fully busy. That ratio is the break-even utilisation, and it is the same for reads and writes.
Provisioned capacity is never fully busy. Autoscaling targets 70% by default, so a perfectly steady table runs near 70% and costs roughly 40% of on-demand. A table that peaks at 10 times its average and is provisioned for the peak runs near 10%, and on-demand is cheaper. Real tables sit between: daytime-heavy traffic with autoscaling usually lands in the 40–60% range, which still favours provisioned.
ConsumedReadCapacityUnits and ConsumedWriteCapacityUnits for the table, statistic Sum, period one hour, over a week that includes your busiest day.node cli.mjs analyze metrics.csv. Add --current-rcu and --current-wcu if the table is provisioned today.Per unit of work, yes: at list prices on-demand costs about 3.5 times as much as a fully used provisioned unit. But provisioned capacity is paid for whether or not you use it, so on-demand is cheaper for idle, spiky or unpredictable tables and provisioned is cheaper once you keep capacity busier than about 29% on average.
Yes, but AWS limits how often. You can change a table's capacity mode a limited number of times per 24 hours (check the current documentation), so decide on a week of data rather than flipping on a bad hour.
It can. Provisioned tables throttle requests above their capacity after burst credit runs out, and autoscaling takes minutes to react. On-demand scales to previously reached peaks quickly but has its own limits on a sudden jump of more than double the previous peak.