ACID Properties
Atomicity, Consistency, Isolation, Durability — guarantees for reliable transactions.
ACID is the canonical set of guarantees that database transaction systems provide to applications, articulated by Theo Härder and Andreas Reuter in their 1983 paper 'Principles of Transaction-Oriented Database Recovery' and building on Jim Gray's foundational transaction work in the late 1970s. Atomicity ensures that a transaction either fully completes or has no effect — partial completion is impossible. Consistency ensures that a transaction takes the database from one valid state to another, preserving all defined integrity constraints. Isolation ensures that concurrent transactions produce the same result as if they had executed sequentially, with practical systems offering tiered isolation levels (read uncommitted, read committed, repeatable read, serializable) trading isolation strength for concurrency. Durability ensures that committed transactions survive system failures. ACID guarantees underpin reliable financial, inventory, and other systems-of-record databases, with implementation through write-ahead logging, two-phase commit for distributed cases, and lock-based or multi-version concurrency control.
Core components
- Atomicity (all-or-nothing)
- Consistency (valid state to valid state)
- Isolation (concurrent transactions appear sequential)
- Durability (committed changes survive failures)
- Implementation via write-ahead logging, two-phase commit, MVCC, locking
- Tiered isolation levels (read uncommitted, read committed, repeatable read, serializable)
- Distinction from BASE
Primary use case
Foundation of relational database management systems and their use in financial, inventory, accounting, and systems-of-record applications; standard reference for what 'transactional' means in database design; basis for distributed transaction protocols including two-phase commit and three-phase commit.
Common criticisms
- ACID guarantees come at substantial performance and availability costs at scale, particularly under network partitions (the trade-off CAP Theorem makes explicit)
- strict serializability is often more isolation than applications actually need, leading to per-application weaker isolation choices
- distributed ACID via two-phase commit is brittle to coordinator failures
- 'Consistency' in ACID is a weaker integrity-constraints notion than the 'C' in CAP, leading to terminological confusion
- ACID-centric thinking can constrain modern distributed-system design where eventual consistency (BASE) is more appropriate.
Lineage
- Siblings
- BASE Properties, CAP Theorem