Что такое Acid в SQL

Требования ACID — набор требований, которые обеспечивают сохранность ваших данных.

  1. Atomicity — Атомарность
  2. Consistency — Согласованность
  3. Isolation — Изолированность
  4. Durability — Надёжность

Атомарность

Гарантирует, что каждая транзакция будет выполнена полностью или не будет выполнена совсем. Не допускаются промежуточные состояния.

Согласованность

Вытекает из предыдущего. Благодаря тому, что транзакция не допускает промежуточных результатов, база остается согласованной. То есть все ячейки таблицы обновлены нужным нам образом.

Изолированность

Во время выполнения транзакции параллельные транзакции не должны оказывать влияния на её результат. Это достигается блокированием данных с которыми работает транзакция или версионированием (это когда внутри базы при каждом обновлении создается новая версия данных и сохраняется старая).

Надёжность

Если пользователь получил подтверждение от системы, что транзакция выполнена, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя. Обесточилась система, произошел сбой в оборудовании? На выполненную транзакцию это не повлияет.

Oct. 9, 2023, Источник

ACID - это акроним и набор требований к транзакционной системе, обеспечивающий наиболее предсказуемую и надёжную работу.

Atomicity

Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Буду выполнены либо всё операции транзакции, либо ни одна из них.

Как правило, БД реализуют это свойство путем добавления механизма, который позволяет понимать, какие транзакции запущены, какие нет.

Consistency

Транзакция, которая достигает своего нормального завершения и фиксирующая свои результаты переводит базу из одного состояния в другое, при этом сохраняя консистентность данных. Это значит, что каждая транзакция по определению фиксирует только допустимые данные.

Isolation

Во время выполнения транзакции параллельно выполняющиеся транзакции не должны оказывать влияния на её результат. Т.к. изолированность - требование довольно дорогое, то вводятся специальные уровни изоляции, допускающие фантомное чтение и т.д.
Про уровни изоляции транзакций и проблемы, которые они решают можно почитать тут

Durable

Если пользователь получил подтверждение о выполнении тразакции, то он может быть уверен что изменения сделанные им не будут отменены из-за какого либо сбоя - выключения сервера, и т.д. Надежность в таком случае может быть достигнута за счет добавления информации о изменении данных в журнал (например в WAL).

Oct. 24, 2023, notes.kiriha.ru