Вложенная транзакция - Nested transaction - Wikipedia

А вложенная транзакция это транзакция базы данных который запускается инструкцией в рамках уже запущенной транзакции.

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

В некоторых базах данных изменения, внесенные вложенной транзакцией, не видны «основной» транзакции, пока вложенная транзакция не будет зафиксирована. По мнению некоторых,[ВОЗ? ] это следует из свойства изолированности транзакций.

Способность правильно обрабатывать вложенные транзакции - необходимое условие для истинно компонентной архитектуры приложений. В инкапсулированной архитектуре на основе компонентов вложенные транзакции могут происходить без ведома программиста. Функция компонента может содержать или не содержать транзакцию базы данных (это инкапсулированный секрет компонента. См. Скрытие информации ). Если вызов такой компонентной функции выполняется внутри скобок BEGIN - COMMIT, возникают вложенные транзакции. Поскольку популярные базы данных, такие как MySQL[1] не допускайте вложенности скобок BEGIN - COMMIT, для этого требуется платформа или монитор транзакций. Когда мы говорим о вложенных транзакциях, следует четко указать, что эта функция зависит от СУБД и доступна не для всех баз данных.

Теория вложенных транзакций аналогична теории плоских транзакций.[2]

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

дальнейшее чтение

  • Герхард Вейкум, Готфрид Фоссен, Транзакционные информационные системы: теория, алгоритмы и практика управления параллелизмом и восстановления, Морган Кауфманн, 2002 г., ISBN  1-55860-508-8

Рекомендации

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