What are read capacity units and write capacity units in DynamoDB?
Learn what DynamoDB read and write capacity units are, how RCUs and WCUs are calculated by item size and consistency, and how to size table throughput.
Expected Interview Answer
A Read Capacity Unit (RCU) and a Write Capacity Unit (WCU) are the throughput units DynamoDB uses to measure and provision reads and writes: one RCU gives one strongly consistent read per second for an item up to 4 KB, and one WCU gives one write per second for an item up to 1 KB.
Reads are metered in 4 KB blocks and writes in 1 KB blocks, rounded up. One RCU is one strongly consistent read/sec up to 4 KB, or two eventually consistent reads/sec, while a transactional read costs two RCUs. One WCU is one standard write/sec up to 1 KB, and a transactional write costs two WCUs. Larger items and larger requests consume proportionally more units, so a 10 KB strongly consistent read needs ceil(10/4) = 3 RCUs.
- Gives a precise, predictable way to size table throughput
- Lets you calculate cost directly from item size and request rate
- Distinguishes cheaper eventually consistent from stronger reads
- Makes throttling behavior transparent and tunable
- Enables accurate capacity planning and auto scaling targets
AI Mentor Explanation
Think of RCUs and WCUs as over allocations: one RCU is like being allowed to read one full over of the scorecard per second, and if a batter's record is thicker than 4 KB you must spend extra overs to read it all. Eventually consistent reads are like glancing at last over's score — half the cost, but possibly a ball behind.
Step-by-Step Explanation
Step 1
Know the base rates
1 RCU = one strongly consistent read/sec up to 4 KB; 1 WCU = one write/sec up to 1 KB.
Step 2
Round item size up to the block
Divide item size by 4 KB for reads (or 1 KB for writes) and round up to get units per request.
Step 3
Adjust for consistency
Eventually consistent reads cost half an RCU; transactional reads cost 2 RCUs and transactional writes cost 2 WCUs.
Step 4
Multiply by request rate
Multiply units-per-request by requests-per-second to get the RCUs/WCUs the table must provision.
Step 5
Validate against metrics
Compare estimates to CloudWatch ConsumedReadCapacityUnits/ConsumedWriteCapacityUnits and tune to avoid throttling.
What Interviewer Expects
- Precise definition: 1 RCU = 4 KB strongly consistent read/sec, 1 WCU = 1 KB write/sec
- Understanding that units are rounded up per block
- Knowing eventually consistent reads cost half an RCU
- Knowing transactional reads/writes cost double
- Ability to compute units for a given item size and rate
Common Mistakes
- Using the same 4 KB block size for writes (writes use 1 KB)
- Forgetting to round item size up to the next block
- Assuming eventually consistent reads cost the same as strongly consistent
- Ignoring the 2x cost of transactional reads and writes
- Confusing capacity units with stored data size or item count
Best Answer (HR Friendly)
“Read and write capacity units are the way DynamoDB measures how much reading and writing it does. Reading a small item once a second uses one read unit, and saving a small item once a second uses one write unit, so you can plan and pay for exactly the throughput you need.”
Code Example
// RCU: strongly consistent read, 4 KB block
function rcus(itemSizeKB, readsPerSec, eventuallyConsistent = false) {
const blocks = Math.ceil(itemSizeKB / 4)
const perRead = eventuallyConsistent ? blocks / 2 : blocks
return Math.ceil(perRead * readsPerSec)
}
// WCU: standard write, 1 KB block
function wcus(itemSizeKB, writesPerSec) {
const blocks = Math.ceil(itemSizeKB / 1)
return Math.ceil(blocks * writesPerSec)
}
// 10 KB item, 100 strong reads/sec -> ceil(10/4)=3 blocks -> 300 RCUs
console.log(rcus(10, 100)) // 300
console.log(rcus(10, 100, true)) // 150 (eventually consistent = half)
// 2 KB item, 50 writes/sec -> 2 blocks -> 100 WCUs
console.log(wcus(2, 50)) // 100Follow-up Questions
- How many RCUs does a transactional read of a 6 KB item consume?
- Why do writes use a 1 KB block while reads use 4 KB?
- How does DynamoDB handle a read larger than the provisioned capacity?
- What is the difference between consumed and provisioned capacity?
- How does BatchGetItem affect capacity unit consumption?
MCQ Practice
1. One RCU provides one strongly consistent read per second for an item up to what size?
One RCU allows one strongly consistent read per second for items up to 4 KB (or two eventually consistent reads).
2. How many RCUs does a single strongly consistent read of a 10 KB item cost?
10 KB divided into 4 KB blocks rounds up to 3, so a strongly consistent read costs 3 RCUs.
3. A transactional write of a 1 KB item costs how many WCUs?
Transactional writes cost double, so a 1 KB transactional write consumes 2 WCUs.
Flash Cards
What does 1 RCU give you? — One strongly consistent read per second up to 4 KB, or two eventually consistent reads per second.
What does 1 WCU give you? — One standard write per second for an item up to 1 KB.
Cost of a transactional read/write? — Double: 2 RCUs per transactional read, 2 WCUs per transactional write.
RCUs for a 12 KB strongly consistent read? — ceil(12/4) = 3 RCUs per read.
Continue Learning
Related Interview Questions
What is read and write capacity in DynamoDB (provisioned vs on-demand)?
medium
What is the difference between eventually consistent and strongly consistent reads in DynamoDB?
medium
What is Amazon DynamoDB and what problems does it solve?
easy
What is a partition key in DynamoDB and how does it distribute data?
medium