Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по БД new.doc
Скачиваний:
11
Добавлен:
18.09.2019
Размер:
687.62 Кб
Скачать

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

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

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

1. AWriteSet  BWriteSet  BWriteLast. Это условие утверждает, что если обе транзакции, А и В, выполняют запись в один и тот же элемент данных, то операция' записи транзакции В должна выполняться после операции записи транзакции А.

2. AReadSet  BWriteSet = Ø. Это условие утверждает, что транзакция А не мо­жет видеть никаких результатов выполнения транзакции В.

3. BReadSet  AWriteSet = ShareSet. Это условие утверждает, что транзакция В может видеть результаты выполнения транзакции А.

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

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

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

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

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