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

Иерархия степеней детализации

Существующие степени детализации блокируемых элементов можно представить в виде иерархической структуры, в которой каждый узел будет представлять элемент данных определенного размера, как показано на рис. 8.4. На этой диаграмме корневой узел представляет всю базу данных, узлы 1-го уровня – это отдельные файлы, а узлы 2-го уровня – страницы. На третьем уровне располагаются узлы, представляющие отдельные записи файлов, а на четвертом – поля этих записей. Если какой-то из элементов данных блокируется, то автоматически оказываются заблокированными и все его узлы-потомки.

Рис. 8.4. Иерархическая схема уровней блокировки

Например, если транзакция выполнит блокировку страницы (Страница 2), то все расположенные в ней записи (Запись 1 и Запись 2) и их поля (Поле 1 и Поле 2) также окажутся заблокированными. Если другая транзакция потребует установления блокировки несовместимого типа для этого же узла, СУБД легко определит, что данное требование удовлетворить не удастся.

Если некоторая транзакция потребует установить блокировку любого из потомков уже заблокированного узла, то СУБД, прежде чем принять решение о возможности удовлетворения этого запроса, потребуется обследовать иерархический путь от корня схемы до того узла, который представляет запрошенный элемент, чтобы проверить, является ли заблокированным какой-либо из предков требуемого узла. Таким образом, при поступлении запроса на исключительную блокировку элемента Запись 1 СУБД потребуется проверить его родительский узел (Страница 2), затем – родительский узел его родительского узла (Файл 2) и, наконец, – корневой узел иерархии (База данных) с целью выяснения, не является ли один из них заблокированным. Если будет обнаружено, что узел Страница 2 заблокирован, выполнение запроса следует отклонить.

Кроме того, транзакция может потребовать установить блокировку узла, который имеет заблокированный узел-потомок. Например, если поступит требование заблокировать элемент Файл 2, СУБД потребуется проверить состояние каждой из страниц этого файла, каждой записи в отдельных страницах и каждого поля всех записей файла, чтобы выяснить, не является ли один из этих элементов заблокированным.

Блокировка с учетом нескольких степеней детализации

Для сокращения объема поиска необходимых для выявления блокировок, выполненных для потомков узла, СУБД может использовать иную специализированную стратегию выполнения блокировки, называемую блокировкой с учетом нескольких степеней детализации. В этой стратегии используется новый тип блокировки, который называется намеченной блокировкой. Когда блокируется любой из узлов схемы, намеченная блокировка устанавливается на все узлы, которые являются предками данного узла. Поэтому если некоторый из потомков узла Файл 2 (например, Страница 2) является заблокированным и выдается запрос на установку блокировки самого узла Файл 2, наличие намеченной блокировки, установленной для этого узла, укажет системе, что один из потомков данного узла является заблокированным.

Намеченные блокировки могут быть либо разделяемыми (Shared – для чтения), либо исключительными (Exclusive – для записи). Намеченная разделяемая блокировка (IS) конфликтует только с исключительной блокировкой, тогда как намеченная исключительная блокировка (IX) конфликтует как с разделяемой, так и с исключительной блокировкой. Кроме того, транзакции могут устанавливать разделяемую и намеченную исключительную блокировку (SIX), которая логически эквивалентна установке и разделяемой блокировки, и блокировки IX. Иными словами, блокировка SIX совместима только с блокировкой IS. Сводные данные о совместимости различных блокировок при использовании метода, предусматривающего применение нескольких степеней детализации блокировок, приведены в табл. 8.8.

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

IS

IX

S

SIX

X

IS

+

+

+

-

-

IX

+

+

-

-

-

S

+

-

+

-

-

SIX

+

-

-

-

-

X

-

-

-

-

-

+ - совместимы, - – несовместимы

Для обеспечения упорядочиваемости графиков в случае использования нескольких степеней блокировки протокол двухфазной блокировки применяется следующим образом.

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

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

  • Ни один узел не может быть разблокирован, пока не будут разблокированы все его потомки.

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

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