Question: Is DynamoDB ACID compliant?

Answered by Rafal Wilinski
Last updated: October 23rd, 2026
Answer
Yes. DynamoDB supports ACID transactions, and its individual item operations are atomic. You do not need a separate transaction library or an optional database engine to get these guarantees.
Use TransactWriteItems when several changes must succeed together, such as creating an order and decrementing inventory. It supports puts, updates, deletes and condition checks across up to 100 distinct items in one or more tables, within the same AWS account and Region. Their combined size cannot exceed 4 MB. You cannot target the same item twice in one transaction.
Use TransactGetItems to read a consistent, atomic view of multiple items. The ACID properties mean:
- Atomicity: the transaction's actions succeed together or none take effect.
- Consistency: conditions and application invariants can be enforced as part of the write. DynamoDB does not add relational foreign keys.
- Isolation: transactional operations provide serializable isolation against individual reads and writes; a normal Query or Scan is not a transaction-wide snapshot.
- Durability: acknowledged writes survive failures through DynamoDB's managed storage and replication.
BatchWriteItem is not a transaction: some writes can succeed while others remain unprocessed. Transactional requests also consume more capacity than ordinary requests, so use a conditional single-item update when it is sufficient.
These guarantees are regional. MREC global tables do not replicate a transaction as an atomic unit, and MRSC global tables do not support the transaction APIs. See DynamoDB transactions and global-table consistency before using them together.
Source: AWS transaction APIs.
Other Common DynamoDB FAQ (with Answers)
- Does DynamoDB support Multi-AZ?
- How do you access DynamoDB from an Android app?
- How do you store Japanese characters in DynamoDB?
- Is connection pooling needed for DynamoDB?
- Should you make a new DynamoDB client for each request?
- How do you handle empty strings in DynamoDB?
- Can I use a UUID as a DynamoDB partition key?
- Is DynamoDB a relational database?
- How do you access DynamoDB from outside AWS?
- How to count rows in DynamoDB?
- Is DynamoDB a wide-column store?
- How to import data from S3 to DynamoDB?
- Can DynamoDB store documents?
- Can Power BI connect to DynamoDB?
- How do you dump multiple DynamoDB tables?
Dynobase is a Professional GUI Client for DynamoDB
Start your 7-day free trial today