DynamoDB distributes data across physical partitions and gives each one a baseline slice of the table's throughput. Adaptive capacity then reshapes that allocation, letting a busy partition borrow throughput other partitions are not using. Adaptive capacity reduces — but does not eliminate — the consequences of a pathological hot key: a single logical key still lives on exactly one physical partition, and that partition has a hard per-partition ceiling it cannot exceed no matter how much spare table capacity exists.
Toggle adaptive capacity below and push skew to the extreme to see all three regimes: throttling early without it, absorbed by spare capacity with it, and the partition ceiling that survives both.
HOTKEY#0 … HOTKEY#4)
Each bar is one physical partition. The dashed line is that partition's effective budget: the baseline slice (total ÷ partitions), plus whatever adaptive capacity can lend it from idle partitions, capped at the per-partition ceiling. Red = incoming traffic exceeds the effective budget = throttled.
DynamoDB does not allocate throughput per logical item — it allocates it per physical partition. The mental model is a chain, not a single rule:
logical key
↓ (hash)
physical partition
↓
baseline capacity distribution (table throughput ÷ partitions)
↓
adaptive capacity may rebalance available throughput toward hot partitions
↓
BUT
a single very hot item/key can still hit a per-partition ceiling
Adaptive capacity means an uneven access pattern is usually absorbed: a partition running hot borrows throughput that idle partitions are not using. It reduces, but does not eliminate, the consequences of a pathological hot key. Two limits survive it: the table's total capacity (you cannot lend what nobody has spare), and a per-partition/item ceiling that no amount of table capacity raises. That is why AWS still recommends designing partition keys that distribute I/O effectively.
When the ceiling is reached, throttling appears while the table-level consumed-capacity metric still looks healthy — see DynamoDB, "Hot keys" and "On-demand is not a hotspot cure."
0..N-1, fan reads/writes across it) is the fix that changes the shape of the problem: the same logical entity's traffic now lands on N physical partitions, each with its own baseline and its own ceiling.