Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnik.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.62 Mб
Скачать

Модель многоуровневых транзакций

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

Одним из вариантов модели открытых вложенных транзакций является модель многоуровневых транзакции, в которой дерево субтранзакций является сбалансированным. Узлы одного и того же уровня дерева соответствуют операциям одного и того же уровня абстракции в СУБД. Ребра древовидного графа модели многоуровневых транзакций моделируют реализацию операции посредством последовательности операций более низкого уровня. Уровни n-уровневой транзакции обозначаются как Lo,.. Lj… Ln, где Lo самый низкий уровень дерева, a Ln корень дерева. Методы обработки обычных плоских транзакций гарантируют, что на самом низком уровне (Lо) конфликты будут отсутствовать. Основная концепция модели многоуровневых транзакций состоит в том, что две операции на уровне Li могут не конфликтовать, даже если их реализации на следующем, более низком уровне Li-1 конфликтуют. Поскольку в ней используется информация о конфликтах на конкретном уровне, модель многоуровневых транзакций позволяет достичь более высокой степени параллельности по сравнению с моделями обработки плоских транзакций.

Динамическая реструктуризация

Выше мы обсуждали некоторые особенности приложений поддержки выполнения различных проектов, например, неопределенная продолжительность работы (от нескольких часов до месяцев), чередование с другими видами операций, неопределенность процесса обработки, не позволяющая предвидеть все аспекты работы с самого начала ее выполнения, и т.д. Для преодоления ограничений, налагаемых основными свойствами (ACID) плоских транзакций, были предложены две новые операции: разбиение транзакции (split_transaction) и объединение транзакций (join_transaction). Принцип, положенный в основу операции разбиения транзакции, состоит в разделении активной транзакции на две упорядочиваемые транзакции и распределении между ними выполняемых действий и используемых ресурсов (например, заблокированных элементов данных). С этого момента вновь созданные транзакции могут выполняться независимо (возможно, даже под контролем разных пользователей) и обрабатываться таким образом, как если бы они всегда были совершенно независимыми.

Подобный подход позволяет сделать промежуточные результаты транзакции доступными другим транзакциям, причем с полным сохранением их семантики, другими словами, если исходная транзакция отвечала всем требованиям ACID, то так же поведут себя и новые транзакции.

Операция разделения транзакции может применяться только в том случае, если возможно создать две транзакции, которые будут упорядочиваемыми по отношению друг к другу и ко всем остальным выполняющимися в данный момент транзакциям. Условия, которые разрешают разделение транзакции Т на две транзакции, А и В, можно определить следующим образом.

1. Если обе транзакции, А и В, выполняют запись в один и тот же элемент данных, то операция записи транзакции В должна выполняться после операции записи транзакции А.

2. Транзакция А не может обращаться к каким-либо результатам выполнения транзакции В.

3. Транзакция В может обращаться к результатам выполнения транзакции А.

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

Операция объединения транзакций выполняет обратные действия по отношению к операции разделения транзакции, соединяя результаты работы двух или нескольких независимых транзакций таким образом, как если бы эти транзакции всегда представляли собой единую транзакцию.

Использование операций разделения транзакции, дополненных операциями объединения одной или нескольких вновь созданных транзакций, позволяет обмениваться ресурсами между определенными транзакциями, не делая эти ресурсы доступными другим транзакциям.

Основные достоинства метода динамической реструктуризации состоят в следующем.

  • Адаптивное восстановление. Возможность зафиксировать часть выполненной в транзакции работы, что исключает ее зависимость от последующих отказов.

  • Снижение уровня изолированности. Возможность освободить часть использовавшихся в транзакции ресурсов посредством фиксации уже выполненной части ее работы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]