Блокировка множественной гранулярности

В базе данных блокировка объектов, содержащих другие объекты

В информатике множественная гранулярность блокировки ( 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, ШЕСТЬ или XIX или ШЕСТЬ

Определение того, какой уровень детализации использовать для блокировки, осуществляется путем блокировки самого тонкого уровня (т. е. на самом нижнем листе), а затем эскалации этих блокировок на более высокие уровни в файловой иерархии, чтобы охватить больше записей или элементов файла по мере необходимости в процессе, известном как «эскалация блокировки». Режимы блокировки MGL совместимы друг с другом, как определено в следующей матрице.

РежимНЛЯВЛЯЕТСЯIXСШЕСТЬХ
НЛДаДаДаДаДаДа
ЯВЛЯЕТСЯДаДаДаДаДаНет
IXДаДаДаНетНетНет
СДаДаНетДаНетНет
ШЕСТЬДаДаНетНетНетНет
ХДаНетНетНетНетНет

Следуя протоколу блокировки и матрице совместимости, если одна транзакция удерживает узел в режиме S, никакие другие транзакции не могут заблокировать ни одного предка в режиме X.

Смотрите также

Ссылки

  1. ^ Джим Грей ; Рэймонд А. Лори; Г. Р. Путцолу; Айривинг Л. Трейгер (1976). «Дробность блокировок и степени согласованности в общей базе данных». Технический отчет IBM . IBM. CiteSeerX  10.1.1.92.8248 .
Взято с "https://en.wikipedia.org/w/index.php?title=Множественная_блокировка_гранулярности&oldid=1134366787"