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 применятся, или ни один
Связанные термины
Анекдоты по теме
— Что такое «фантомное чтение»? — Запускаешь SELECT дважды в транзакции, второй раз видишь новые строки. — Почему? — Другая транзакция вставила и закоммитила строки между двумя твоими SELECT. — Как избежать? — REPEATABLE READ или SERIALIZABLE.
— Что такое two-phase commit? — Протокол для распределённых транзакций через несколько баз. — Фазы? — 1: все участники готовятся и говорят «готов». — 2: если все готовы — все фиксируют. Иначе — все откатывают. — Надёжно? — Да, но медленно. Один slow participant тормозит всех.
— Папа, а что такое транзакция? — Это когда ты говоришь маме «Я мою посуду», начинаешь мыть, но если она входит на кухню — делаешь ROLLBACK и говоришь «Я ещё не начинал».