Read and write capacity units in DynamoDB - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When working with DynamoDB, it's important to understand how read and write capacity units affect performance.
We want to know how the number of capacity units used grows as we read or write more data.
Analyze the time complexity of the following DynamoDB operations.
// Writing multiple items
const items = [...]; // list of items
for (const item of items) {
await dynamodb.putItem({ TableName: 'MyTable', Item: item });
}
// Reading multiple items
const keys = [...]; // list of keys
const result = await dynamodb.batchGetItem({
RequestItems: { 'MyTable': { Keys: keys } }
});
This code writes many items one by one and reads many items in a batch from DynamoDB.
Look for repeated actions that cost time.
- Primary operation: Writing each item individually in a loop.
- How many times: Once per item in the list.
- Secondary operation: Reading multiple items in one batch request.
- How many times: One batch call for all keys.
As you add more items, the number of capacity units used grows.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 write units for writes, 1 batch read |
| 100 | About 100 write units for writes, 1 batch read |
| 1000 | About 1000 write units for writes, 10 batch reads |
Writing scales linearly with the number of items because each item costs capacity units. Reading in batch is one operation but capacity units depend on total data size.
Time Complexity: O(n)
This means the capacity units and time grow directly with the number of items you read or write.
[X] Wrong: "Batch reading many items costs the same as reading one item."
[OK] Correct: Even though batch reads are one request, the capacity units used depend on the total size of all items read, so cost grows with data size.
Understanding how capacity units scale helps you design efficient DynamoDB usage and shows you can think about performance in real systems.
"What if we switched from writing items one by one to using batch write operations? How would the time complexity change?"
Practice
Solution
Step 1: Understand capacity units meaning
Read and write capacity units define how many read and write operations a DynamoDB table can perform each second.Step 2: Identify what capacity units control
They control throughput, not storage size, number of tables, or security settings.Final Answer:
The number of reads and writes the table can handle per second -> Option AQuick Check:
Capacity units = throughput control [OK]
- Confusing capacity units with storage size
- Thinking capacity units control security
- Assuming capacity units limit number of tables
Solution
Step 1: Recall AWS CLI syntax for capacity units
The correct syntax uses --provisioned-throughput with ReadCapacityUnits and WriteCapacityUnits keys.Step 2: Match options with correct syntax
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=10 matches the exact syntax; others use incorrect keys or formats.Final Answer:
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=10 -> Option BQuick Check:
Correct CLI syntax = --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=10 [OK]
- Using incorrect keys like ReadUnits or WriteUnits
- Missing commas or using wrong separators
- Confusing throughput with capacity keywords
Solution
Step 1: Understand write capacity unit size
One write capacity unit allows one write per second for an item up to 1 KB.Step 2: Calculate writes for 2 KB items
Each 2 KB item requires 2 write capacity units. With 10 units, 10 / 2 = 5 writes per second.Final Answer:
5 writes per second -> Option AQuick Check:
Write capacity units / item size factor = writes/sec [OK]
- Assuming 1 unit = 2 KB write
- Not dividing capacity units by item size
- Confusing read and write capacity units
Solution
Step 1: Recall read capacity unit size
One read capacity unit supports one strongly consistent read per second for an item up to 4 KB.Step 2: Analyze throttling cause
If items are larger than 4 KB, each read consumes multiple units, so 5 units may not support 3 reads per second.Final Answer:
Each read item is larger than 4 KB, requiring more capacity units -> Option CQuick Check:
Item size affects read capacity usage [OK]
- Blaming write capacity units for read throttling
- Ignoring item size impact on capacity
- Thinking region or storage size causes throttling
Solution
Step 1: Understand capacity modes
DynamoDB offers on-demand mode that adjusts capacity automatically to traffic, optimizing cost and performance.Step 2: Compare options for cost efficiency
Setting high fixed units wastes money; manual changes are slow; zero units disables table. On-demand is best for variable traffic.Final Answer:
Use on-demand capacity mode to automatically adjust units based on traffic -> Option DQuick Check:
On-demand mode = auto scaling capacity [OK]
- Setting fixed high capacity wastes money
- Manually adjusting capacity is inefficient
- Setting zero units disables table access
