stringtranslate.com

Вложенная транзакция

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

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

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

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

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

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

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

Ссылки

  1. ^ "Операторы, вызывающие неявную фиксацию". MySQL 4.1 Reference Manual . Oracle . Получено 5 декабря 2010 .
  2. ^ Резенде, РФ; Эль Аббади, А. (1994-05-25). «О теореме сериализуемости для вложенных транзакций». Information Processing Letters . 50 (4): 177–183. CiteSeerX 10.1.1.43.6470 . doi :10.1016/0020-0190(94)00033-6. 
  3. ^ Вайкум, Герхард; Ханс-Й. Шек (1992). Концепции и приложения многоуровневых транзакций и открытых вложенных транзакций. Морган Кауфманн. С. 515–553. CiteSeerX 10.1.1.17.7962 . ISBN  978-1-55860-214-4. {{cite book}}: |journal=проигнорировано ( помощь )