Рассмотренные транзакции удовлетворяют требованию строгой двухфазной группировки, которая используется всеми коммерческими СУБД. Строгая двухфазная группировка вводит дополнительное ограничение, которое заключается в том, что блокировки могут быть сняты только тогда, когда выполнены все операции по подтверждению успешного выполнения группировки или же по окату транзакции.
ИЕРАРХИЧЕСКАЯ БЛОКИРОВКА
В реальных СУБД блокировка может налагаться на любой объект данных. При этом объекты данных можно описать следующей иерархической структурой:
Если система позволяет накладывать блокировки на объекты данных различных уровней иерархии, то говорят, что в этой системе имеется определенная степень дробления блокировок. Для реализации некоторой степени блокировки, множество выполняемых примитивов должны быть расширенны. Для реализации иерархической блокировки, используются следующие примитивы (блокировки):
1. XL – исключительная блокировка, которая соответствует блокировке налагаемой при выполнении операции записи, рассмотренной ранее.
2. SL – разделяемая блокировка, соответствующая блокировке, налагаемой на выполнение операции чтения, рассмотренной ранее.
3. ISL – преднамеренная разделяемая блокировка. Данная блокировка выражает намерения заблокировать объект данных, находящийся на более низкой ступени иерархии, по сравнению с текущим уровнем иерархии.
4. IXL – преднамеренная исключительная блокировка. Выражает намерение заблокировать объект данных, находящийся на более низкой ступени иерархии по сравнению с текущим уровнем иерархии.
5. SIXL – комбинированная блокировка. Она блокирует объект данных, находящийся на текущем уровне иерархии в режиме разделения ресурсов и выражает намерение заблокировать объект данных, находящийся на более низком уровне иерархии.
Протокол иерархической блокировки состоит из следующих 5 правил:
1. Блокировки устанавливаются, начиная с самого верхнего уровня иерархии, и продвигаются далее вниз по дереву.
2. Блокировки снимаются с самого низкого уровня иерархии, с продвижением по дереву вверх.
3. Для того, что запросить SL or ISL на определенном уровне иерархии, транзакция должна наложить блокировку ISL or IXL на объект находящийся на предшествующем уровне иерархии.
4. Для того, чтобы наложить одну из блокировок: ISL,XL,SIXL, на одном из уровней иерархии, транзакция перед этим должна наложить блокировку SIXL or IXL на предшествующий уровень иерархии.
5. Менеджер блокировок обрабатывает запросы на блокировку в соответствии со следующей таблицей совместимости блокировок:
Запрос |
Состояние ресурса |
||||
ISL |
IXL |
SL |
SIXL |
XL |
|
ISL |
OK |
OK |
OK |
OK |
NO |
IXL |
OK |
OK |
NO |
NO |
NO |
SL |
OK |
NO |
OK |
NO |
NO |
SIXL |
OK |
NO |
NO |
NO |
NO |
XL |
NO |
NO |
NO |
NO |
NO |
Чем выше в системе степень дробление блокировок, тем выше степень параллелизма.
ТУПИКОВЫЕ СИТУАЦИИ
Имеет место ситуация, когда 2 или более транзакции находятся в состоянии ожидания и не могут из него выйти, т.к. ожидают освобождения ресурсов, задерживая друг друга. Распространена стратегия тайм-аута. Согласно этой стратегии, транзакция снимается с выполнения, если в течение определенного времени она не вышла из состояния ожидания. И так же может быть организован автоматический ее перезапуск. Возможен также анализ таблиц блокировок с целью нахождения тупиковых ситуаций.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.