Транзакции должны удовлетворять свойствам ACID:
- Atomicity (Атомарность): Транзакция должна быть либо полностью выполнена, либо полностью отменена. Если какая-либо часть транзакции не удалась, вся транзакция откатывается к исходному состоянию.
- Consistency (Согласованность): Транзакция переводит базу данных из одного согласованного состояния в другое. Она не должна нарушать целостность данных или правила ограничений.
- Isolation (Изолированность): Выполняемые concurrently транзакции не должны влиять друг на друга. Результат выполнения множества транзакций должен быть таким же, как если бы они выполнялись последовательно. Проблемы изоляции включают:
- Dirty read (Грязное чтение): Чтение данных, которые еще не были зафиксированы (закоммичены) другой транзакцией.
- Non-repeatable read (Неповторяющееся чтение): Повторное чтение одних и тех же данных в рамках одной транзакции возвращает разные значения, потому что другая транзакция изменила и зафиксировала их между чтениями.
- Phantom read (Фантомное чтение): При повторном выполнении за