ACID
Четыре свойства надёжных транзакций: Atomicity, Consistency, Isolation, Durability.
BEGIN; ... COMMIT; -- ACID гарантируется
Объяснение
Пример
-- Пример нарушения без транзакции: -- Списали деньги с одного счёта, сервер упал — деньги пропали. -- С транзакцией: BEGIN; UPDATE acc SET balance = balance - 500 WHERE id = 1; UPDATE acc SET balance = balance + 500 WHERE id = 2; COMMIT; -- оба UPDATE применятся, или ни один
Связанные термины
Анекдоты по теме
— Что такое CAP теорема? — Consistency, Availability, Partition tolerance — выбери два из трёх. — Это значит распределённые базы ненадёжны? — Нет. Partition tolerance обязательна. Реальный выбор: CP (PostgreSQL, MongoDB) или AP (Cassandra, CouchDB). — А PACELC? — Более реалистичная модель. Но это уже другая история.
— Что такое «грязное чтение»? — Читаешь данные транзакции, которая ещё не закоммитилась. — А вдруг она сделает ROLLBACK? — Именно. Ты прочитал данные, которых «не было». — PostgreSQL это допускает? — Нет. Минимальный уровень — READ COMMITTED. Грязных чтений не бывает.
Программист: — Я сделал бэкап перед DELETE. DBA: — Молодец. Программист: — А потом забыл, куда сохранил. DBA: — Классика.