Совместимость блокировок (компонент Database Engine)

Совместимость блокировок определяет, могут ли несколько транзакций одновременно получить блокировку одного и того же ресурса. Если ресурс уже блокирован другой транзакцией, новая блокировка может быть предоставлена только в том случае, если режим запрошенной блокировки совместим с режимом существующей. В противном случае транзакция, запросившая новую блокировку, ожидает освобождения ресурса, пока не истечет время ожидания существующей блокировки. Например с монопольными блокировками не совместим ни один из режимов блокировки. Пока удерживается монопольная (X) блокировка, больше ни одна из транзакций не может получить блокировку ни одного из типов (разделяемую, обновления или монопольную) на этот ресурс, пока не будет освобождена монопольная (X) блокировка. И наоборот, если к ресурсу применяется разделяемая (S) блокировка, другие транзакции могут получать разделяемую блокировку или блокировку обновления (U) на этот элемент, даже если не завершилась первая транзакция. Тем не менее другие транзакции не могут получить монопольную блокировку до освобождения разделяемой.

Следующая таблица показывает совместимости для большинства из распространенных режимов блокировки.

Уже предоставленный режим

Запрашиваемый режим

IS

S

U

IX

SIX

X

Намеренная разделяемая (IS)

Да

Да

Да

Да

Да

Нет

Совмещаемая (S)

Да

Да

Да

Нет

Нет

Нет

Обновления (U)

Да

Да

Нет

Нет

Нет

Нет

С намерением монопольного доступа (IX)

Да

Нет

Нет

Да

Нет

Нет

Совмещаемая с намерением монопольного доступа (SIX)

Да

Нет

Нет

Нет

Нет

Нет

Монопольная (Х)

Нет

Нет

Нет

Нет

Нет

Нет

ПримечаниеПримечание

Намеренная монопольная блокировка (IX) совместима с блокировкой IX, поскольку IX означает намерение обновить не все строки, а только некоторые из них. Другим транзакциям разрешено чтение и обновление некоторых строк, если только это не строки, которые обновляются другими транзакциями.

Полная матрица совместимости блокировок

Для определения совместимости всех режимов блокировок, доступных в MicrosoftSQL Server, используется следующая таблица.

Диаграмма матрицы совместимости блокировок