Блокировка множественной детализации
Эта статья нуждается в дополнительных цитатах для проверки . ( январь 2021 г. ) |
В информатике используемый блокировка с множественной степенью детализации ( MGL ) — это метод блокировки, в системах управления базами данных (СУБД) и реляционных базах данных .
При блокировке с множественной степенью детализации блокировки устанавливаются на объекты , которые содержат другие объекты. MGL использует иерархическую природу отношений «содержит» . Например, в базе данных могут быть файлы, содержащие страницы, содержащие записи. Это можно рассматривать как дерево объектов, где каждый узел содержит своих дочерних элементов. Блокировка этой структуры (например, общая или эксклюзивная блокировка) блокирует целевой узел, а также всех его потомков. [ 1 ]
Блокировка с множественной степенью детализации обычно используется с нестрогой двухфазной блокировкой, чтобы гарантировать сериализуемость .
Режимы блокировки
[ редактировать ]В дополнение к общим ( S ) блокировкам и исключительным ( X ) блокировкам из других схем блокировки, таких как строгая двухфазная блокировка, MGL также использует преднамеренные «блокировки», которые не блокируют узел напрямую, а вместо этого обозначают существование или намерение узла. добавить блокировку указанного типа ниже в иерархии узлов. Преднамеренные блокировки включают в себя «совместные с намерением» ( IS ), «исключительные с намерением» ( IX ) и комбинированные «совместные и исключающие с намерением» блокировки ( SIX ). Блокировки IS конфликтуют с блокировками X , а блокировки IX конфликтуют с S и X. блокировками Нулевая блокировка ( NL ) совместима со всем.
Чтобы заблокировать узел в S (или X ), MGL имеет блокировку транзакции для всех своих предков с помощью IS (или IX ), поэтому, если транзакция блокирует узел в S (или X ), ни одна другая транзакция не сможет получить доступ к своим предкам в X (или S и X ). Этот протокол показан в следующей таблице:
Получить | Должно быть у всех предков |
ЕСТЬ или С | ЕС или IX |
IX, ШЕСТЬ или Х | IX или ШЕСТЬ |
Определение того, какой уровень детализации использовать для блокировки, осуществляется путем блокировки максимально возможного уровня (т. е. на самом нижнем листе), а затем эскалации этих блокировок на более высокие уровни в файловой иерархии, чтобы охватить больше записей или элементов файла по мере необходимости в процессе. известный как «эскалация блокировки». Режимы блокировки MGL совместимы друг с другом, как определено в следующей матрице.
Режим | Нидерланды | ЯВЛЯЕТСЯ | IX | С | ШЕСТЬ | Х |
---|---|---|---|---|---|---|
Нидерланды | Да | Да | Да | Да | Да | Да |
ЯВЛЯЕТСЯ | Да | Да | Да | Да | Да | Нет |
IX | Да | Да | Да | Нет | Нет | Нет |
С | Да | Да | Нет | Да | Нет | Нет |
ШЕСТЬ | Да | Да | Нет | Нет | Нет | Нет |
Х | Да | Нет | Нет | Нет | Нет | Нет |
Согласно протоколу блокировки и матрице совместимости, если одна транзакция удерживает узел в режиме S, никакие другие транзакции не могут заблокировать какого-либо предка в режиме X.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Джим Грей ; Раймонд А. Лори; Г. Р. Пуцолу; Иривинг Л. Трейгер (1976). «Детализация блокировок и степень согласованности в общей базе данных». Технический отчет IBM . ИБМ. CiteSeerX 10.1.1.92.8248 .