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

В Информатика, множественная блокировка гранулярности (MGL) - метод блокировки, используемый в системы управления базами данных (СУБД) и реляционные базы данных.

При блокировке с множественной гранулярностью замки устанавливаются на объекты, содержащие другие объекты. MGL использует иерархический характер содержит отношение. Например, в базе данных могут быть файлы, содержащие страницы, содержащие записи. Это можно рассматривать как дерево объектов, где каждый узел содержит своих дочерних элементов. Блокировка этой структуры (например, разделяемая или исключительная блокировка) блокирует целевую узел а также все его потомки.[1]

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

Режимы блокировки

Помимо общих (S) блокировки и эксклюзивные (Икс) блокировок из других схем блокировки, таких как строгая двухфазная блокировка, MGL также использует преднамеренные «блокировки», которые не блокируют напрямую узел, а вместо этого обозначают наличие или намерение добавить блокировку указанного типа ниже в иерархия узлов. Преднамеренные блокировки включают «совместное намерение» (ЯВЛЯЕТСЯ), "исключительное намерение" (IX), а также сочетание «разделяемое и исключающее намерение» (ШЕСТЬ) замки. ЯВЛЯЕТСЯ конфликты замков с Икс замки, в то время как IX конфликты замков с S и Икс замки. Нулевая блокировка (NL) совместим со всем.

Чтобы заблокировать узел в S (или же Икс), MGL имеет блокировку транзакции на всех своих предках с ЯВЛЯЕТСЯ (или же IX), поэтому, если транзакция блокирует узел в S (или же Икс), никакая другая транзакция не может получить доступ к своим предкам в Икс (или же S и Икс). Этот протокол показан в следующей таблице:

ПолучитьДолжен быть у всех предков
IS или SIS или IX
IX, SIX или XIX или SIX

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

РежимNLЯВЛЯЕТСЯIXSШЕСТЬИкс
NLдададададада
ЯВЛЯЕТСЯдададададаНет
IXдададаНетНетНет
SдадаНетдаНетНет
ШЕСТЬдадаНетНетНетНет
ИксдаНетНетНетНетНет

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

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

Рекомендации

  1. ^ Джим Грей; Раймонд А. Лори; Г. Р. Пуцолу; Айвинг Л. Трейгер (1976). «Детализация блокировок и степени согласованности в общей базе данных». Технический отчет IBM. IBM. CiteSeerX  10.1.1.92.8248.CS1 maint: несколько имен: список авторов (ссылка на сайт)