Свойства транзакций ACID

Давайте повторим определение транзакции.

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

Курс 1С: Эксперт. Свойства транзакций СУБД ACID
Свойства ACID

Транзакция должна соответствовать следующим условиям:

Атомарность (неделимость).

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

Это достигается механизмом WAL.

Согласованность (целостность).

В СУБД много служебных таблиц, которые должны быть между собой согласованы. Например, таблица Справочника, у которой дополнительно есть табличные части и связанные таблицы, для которых первичный ключ (PK) таблицы является внешним ключом (FK) и т.д.

Следовательно, на начало и на окончание выполнение транзакции СУБД должна быть  согласована. Или другими словами, единая логическая операция переводит СУБД из одного согласованного состояния в другое.

При этом внутри самой логической операции согласованность СУБД может теряться, т.к. изменяются данные водной таблице, потом в другой и т.д.

Это так же достигается механизмом WAL.

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

Каждая транзакция, которая изменяет данные, не должна мешать другим транзакциям. В частности, не должно быть такого, что данные, которые меняются в одной логической операции, в этот же момент могут изменять в другой логической операции (в частности проблема потерянного обновления).

Это достигается правилами уровней изоляции транзакций и блокировками.

Долговечность (надежность).

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

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

На этот случай в СУБД есть механизм чтения информации из файлов логов, а в самой таблице данных в файле (mdf для MS SQL) стоит отметка, что данные захватывались такой-то транзакцией (т.е. следует уточнять по логам).

Другими словами, это так же достигается механизмом WAL.

ACID

Сокращённо все 4 свойства составляют аббревиатуру  ACID.

1 Atomicity Атомарность
2 Consistency Согласованность
3 Isolation Изолированность
4 Durability Долговечность

Данная тема подробнее рассматривается в пакете видео-курса «Секреты 1С: Эксперта» Шаг 3. Занятие 09-02 Управление блокировками в 1С..

Константин Ефимов | 1С: Эксперт. Сопровождение проектов 1С.

КОНСТАНТИН ЕФИМОВ
Комментарии и вопросы