ACID Properties
The four guarantees that make database transactions reliable
Overview
ACID stands for Atomicity, Consistency, Isolation, and Durability, the four guarantees that make transactions trustworthy. Atomicity means all-or-nothing, consistency keeps the database following its rules, isolation stops concurrent transactions from corrupting each other, and durability ensures committed data survives a crash. These properties are why relational databases are a safe place for critical data like payments.
Syntax / Usage
You rely on ACID by using transactions; the database enforces the guarantees. Isolation behavior can be tuned with isolation levels.
-- Atomicity + Durability: after COMMIT, both updates are permanent
BEGIN;
UPDATE accounts SET balance = balance - 50 WHERE id = 1;
UPDATE accounts SET balance = balance + 50 WHERE id = 2;
COMMIT;
-- Isolation: control how transactions see concurrent changes
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Examples
Consistency is enforced by constraints even inside a transaction:
BEGIN;
-- Fails if it would make balance negative and a CHECK forbids it
UPDATE accounts SET balance = balance - 999 WHERE id = 1;
COMMIT; -- rejected, leaving data valid
A stricter isolation level prevents two transfers from reading stale balances:
BEGIN ISOLATION LEVEL REPEATABLE READ;
SELECT balance FROM accounts WHERE id = 1;
UPDATE accounts SET balance = balance - 50 WHERE id = 1;
COMMIT;
Common Mistakes
- Assuming individual statements outside a transaction are still atomic across multiple rows
- Ignoring isolation levels and then being surprised by dirty or non-repeatable reads
- Believing durability protects against bad application logic; it only protects committed data
- Expecting the same strict ACID guarantees from every NoSQL store by default
- Using the lowest isolation level for speed without understanding the concurrency risks
See Also
databases-transactions databases-relational-basics databases-sql-vs-nosql