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

Транзакция должна соответствовать следующим условиям:
Атомарность (неделимость).
Т.е. транзакция, какой бы длинной она ни была, сколько бы ресурсов мы не изменяли по ходу ее выполнения, в случае возникновения ошибки, технического сбоя или отмены, должна быть отменена полностью. Т.е. должны быть отменены все действия, которые были совершены в рамках одной логичческой операции.
Это достигается механизмом 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С..