Ответ
ACID — это набор свойств, гарантирующих надежную обработку транзакций в СУБД. Каждое свойство напрямую влияет на поведение и результат транзакции:
- A (Atomicity — Атомарность): Транзакция выполняется как единое целое. Влияние: либо выполняются все операции транзакции, либо ни одна. При сбое все изменения откатываются (rollback).
- C (Consistency — Согласованность): Транзакция переводит базу данных из одного валидного состояния в другое, соблюдая все бизнес-правила, ограничения целостности (constraints), триггеры.
- I (Isolation — Изолированность): Параллельно выполняющиеся транзакции изолированы друг от друга. Влияние: их промежуточные результаты не видны другим транзакциям. Уровень изоляции (Read Committed, Repeatable Read и др.) определяет степень этой изоляции и возможные аномалии (грязное чтение, неповторяемое чтение, фантомное чтение).
- D (Durability — Долговечность): После успешного завершения (commit) изменения, сделанные транзакцией, сохраняются навсегда, даже в случае сбоя системы (за счет записи в WAL — Write-Ahead Log).
Практический пример на SQL:
START TRANSACTION; -- Начало транзакции
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
-- ACID гарантирует, что оба UPDATE будут зафиксированы или откатаны вместе.
COMMIT; -- Фиксация изменений (Durability вступает в силу)