Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Улучшенные модели транзакции: проблемы классических моделей транзакций, модель вложенных транзакций, модель хроник



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

Существуют и более сложные приложения работы с БД, в том числе средства разработки, например инженерные (CAD) или программные (CASE). Эти приложения могут включать длительные транзакции, например, продолжительностью несколько часов, дней, а возможно и месяцев. При этом возникают следующие проблемы:

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

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

3 Чем дольше время выполнения транзакции, тем больше вероятность возникновения взаимной блокировки.

Модель вложенных транзакций
Автор: Administrator
В этой модели транзакция рассматривается как набор связанных подзадач, называемых субтранзакциями. Каждая из подзадач в свою очередь может состоять из произвольного количества подзадач. Таким образом, полная транзакция представляет собой иерархию субтранзакций.   Только субтранзакции самого нижнего уровня могут выполнять операции в БД. Т1 Организовать путешествие Т2 Купить билеты (пусть до места назначения можно добраться только с пересадкой) Т3 Купить билеты до места пересадки Т4 Купить билеты до места назначения Т5 Забронировать место в выбранном клиентом отеле Т6 Нанять автомобиль /*Изобразить в виде дерева */ Завершение работы транзакций должно происходить в направлении снизу вверх. Следовательно, транзакции Т3 и Т4 должны закончить работу до завершения работы их родительской транзакции Т2, а Т2 должна завершиться прежде, чем Т1. Однако отмена транзакции на некотором уровне не оказывает влияния на связанные транзакции более высоких уровней. Вместо этого родительской транзакции разрешается выполнить свою собственную операцию восстановления нормальной работы одним из следующих способов: 1 Повторить выполнение транзакции. 2 Проигнорировать данный отказ. В этом случае субтранзакция полагается несущественной. В рассмотренном примере это может быть Т6, то есть без нее можно быть продолжено выполнение родительской транзакции. /*Это определено по смыслу операции: можно организовать путешествие и без автомобиля */ 3 Запустить альтернативную транзакцию, называемую возможной субтранзакцией. Например, если при выполнении Т5 нельзя забронировать место в отеле, выбранном клиентом, то можно забронировать место в отеле, где есть свободные места. /*то же по смыслу транзакции */ 4 Прекратить работу, при этом аналогичная процедура проводиться для родительской транзакции. Обновления, выполненные завершенными субтранзакциями промежуточных уровней, должны быть видны только их непосредственным родителям. /*Результаты Т3 доступны Т2, но недоступны Т1 и недоступны любой внешней по отношению к Т1 транзакции. */ Более того, завершение субтранзакции является условно зависимым от нормального завершения или отмены ее родительской транзакции. /*Если Т3 завершилась успешно, а Т2 – со сбоем, то результаты Т3 также не будут зафиксированы в БД*/ Для модели вложенных транзакций предложен следующий протокол. 1 Субтранзакции родительской транзакции выполняются так, как если бы они были независимыми транзакциями. 2 Субтранзакции разрешается устанавливать блокировку на элемент, если на него уже установлена блокировка родительской субтранзакции. 3 Когда субтранзакция завершает работу, ее блокировки наследует родительская транзакция. Достоинства модели вложенных транзакций. 1 Достижение параллельности обработки в рамках одной транзакции, а не только между независимыми транзакциями. 2 Возможность управления восстановлением в пределах транзакции, а не всей транзакцией, как единым целым. Механизм вложенных транзакций может быть эмулирован для плоских транзакций с использованием точек сохранения. Точкой сохранения называется определенная точка в плоской транзакции, представляющая некоторое частично согласованное состояние, которая может быть использована как точка промежуточного рестарта транзакции в случае возникновения проблем. Таким образом достигается одно из достоинств вложенных транзакций, заключающееся в предоставлении некоторой единицы восстановления, меньшей чем транзакция в целом. Если точки сохранения реализованы в СУБД, то при работе транзакции пользователь может установить точку сохранения, присвоив ей некоторый идентификатор. Теперь он может выполнить не только команду отмены транзакции целиком, но и отмены транзакции до определенной точки сохранения.

Хроника – это последовательность плоских транзакций, которые могут чередоваться с прочими транзакциями.

СУБД гарантирует, что либо все входящие в хронику транзакции будут успешно завершены, либо будут запущены компенсирующие транзакции, необходимые для устранения достигнутых частичных результатов. В отличие от метода вложенных транзакций, допускающего произвольный уровень вложения, метод хроник разрешает наличие единственного уровня вложения. Более того, для каждой выделенной субтранзакции должна существовать соответствующая компенсирующая транзакция, которая будет семантически аннулировать результаты, достигаемые с помощью данной субтранзакции. /*Например, если субтранзакция update сотрудник set з\п=з\п*1,2 то должна быть компенсирующая update сотрудник set з\п=з\п\1.2. */

Таким образом, если имеется хроника из n субтранзакций T1, T2, …, Tn с соответствующим набором компенсирующих транзакцийC1, C2, …, Cn, то окончательный результат выполнения хроники будет определятся одной из следующих последовательностей субтранзакций.

1 T1, T2, …, Tn – если вся транзакция была успешно завершена

2 T1, T2, …, Ti, Ci-1, Ci-2, …, C1 – если выполнение транзакции Tiбыло прекращено.

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





Дата публикования: 2015-02-18; Прочитано: 679 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...