Вложенная транзакция является транзакций базы данных , которая запускается по инструкции в объеме уже начатой операции.
Вложенные транзакции реализуются по-разному в разных базах данных. Однако их объединяет то, что изменения не становятся видимыми для каких-либо несвязанных транзакций до тех пор, пока не будет зафиксирована самая внешняя транзакция. Это означает, что фиксация во внутренней транзакции не обязательно сохраняет обновления в системе.
В некоторых базах данных изменения, внесенные вложенной транзакцией, не видны «хост-транзакции» до тех пор, пока вложенная транзакция не будет зафиксирована. По некоторым данным, [ кто? ] это следует из свойства изолированности транзакций.
Возможность правильно обрабатывать вложенные транзакции является предпосылкой для истинно компонентной архитектуры приложений. В инкапсулированной архитектуре на основе компонентов вложенные транзакции могут происходить без ведома программиста. Функция компонента может содержать или не содержать транзакцию базы данных (это инкапсулированный секрет компонента. См. Скрытие информации ). Если вызов такой компонентной функции выполняется внутри скобок BEGIN - COMMIT, возникают вложенные транзакции. Так как популярные базы данных, такие как MySQL [1] , не допускают вложения скобок BEGIN - COMMIT, для этого требуется инфраструктура или монитор транзакций. Когда мы говорим о вложенных транзакциях, следует пояснить, что эта функция зависит от СУБД и доступна не для всех баз данных.
Теория вложенных транзакций аналогична теории плоских транзакций. [2]
Банковская отрасль обычно обрабатывает финансовые транзакции, используя открытые вложенные транзакции , [ цитата необходима ], которая является более свободным вариантом модели вложенных транзакций, которая обеспечивает более высокую производительность при одновременном принятии сопутствующих компромиссов несогласованности. [3]
дальнейшее чтение
- Герхард Вейкум, Готфрид Фоссен, Транзакционные информационные системы: теория, алгоритмы и практика управления параллельным выполнением и восстановления , Морган Кауфманн, 2002, ISBN 1-55860-508-8
Рекомендации
- ^ «Заявления, вызывающие неявную фиксацию» . Справочное руководство по MySQL 4.1 . Oracle . Проверено 5 декабря 2010 года .
- ^ Ресенде, РФ; Эль Аббади, А. (1994-05-25). «О теореме сериализуемости вложенных транзакций». Письма об обработке информации . 50 (4): 177–183. CiteSeerX 10.1.1.43.6470 . DOI : 10.1016 / 0020-0190 (94) 00033-6 .
- ^ Вейкум, Герхард; Ганс-Дж. Щек (1992). Концепции и приложения многоуровневых транзакций и открытых вложенных транзакций . Модели транзакций базы данных для сложных приложений . Морган Кауфманн. С. 515–553 . CiteSeerX 10.1.1.17.7962 . ISBN 978-1-55860-214-4.