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 применятся, или ни одинСвязанные термины
Анекдоты по теме
— Что такое UNLOGGED TABLE? — Таблица без WAL (Write-Ahead Log). — Быстрее обычной? — В 5–10 раз на INSERT. — В чём подвох? — При сбое данные теряются. Не реплицируется. — Когда использовать? — Кэш, временные данные, staging для ETL.
— Что такое DDL транзакции? — В PostgreSQL DDL операции (CREATE, ALTER, DROP) транзакционны. — То есть можно откатить DROP TABLE? — Да! BEGIN; DROP TABLE users; ROLLBACK; — таблица цела. — В MySQL? — DDL делает implicit COMMIT. Откатить нельзя. — Это важное отличие.
— Чем TRUNCATE отличается от DELETE? — DELETE логирует каждую строку и может быть в транзакции. — TRUNCATE удаляет всё разом, не логируя строки. Быстрее. — Но TRUNCATE нельзя откатить? — В PostgreSQL можно — TRUNCATE транзакционный. — В MySQL? — Там TRUNCATE автоматически фиксирует транзакцию. Осторожно.