Совместимость блокировок
Если ресурс уже заблокирован одной транзакцией, а второй транзакции необходим доступ к нему, Microsoft SQL Server Compact определяет, разрешить ли вторую блокировку, исходя из совместимости с режимом блокировки, используемым первой транзакцией.
К заблокированному ресурсу можно применить только совместимые типы блокировок. Например, при использовании монопольной блокировки (X) ни одна другая транзакция не может применить общую либо монопольную блокировку или же блокировку обновления к этому ресурсу, пока блокировка X не будет освобождена по завершении первой транзакции. Кроме того, если к ресурсу была применена общая блокировка (S), другие транзакции также могут применить общую блокировку или блокировку обновления (U) к этому элементу, даже если первая транзакция не была завершена. Однако другие транзакции не могут применить монопольную блокировку, пока общая блокировка не будет освобождена.
Режимы блокировки ресурсов обладают матрицей совместимости, которая показывает совместимость блокировок, получаемых одним ресурсом, причем блокировки расположены в порядке возрастания силы.
В следующей таблице приведены запрошенные режимы блокировок и их совместимость с существующим режимом блокировки.
Запрошенный режим |
IS |
S |
U |
IX |
SIX |
X |
---|---|---|---|---|---|---|
Общая блокировка намерения (IS) |
Да |
Да |
Да |
Да |
Да |
Нет |
Совмещаемая (S) |
Да |
Да |
Да |
Нет |
Нет |
Нет |
Обновления (U) |
Да |
Да |
Нет |
Нет |
Нет |
Нет |
С намерением монопольного доступа (IX) |
Да |
Нет |
Нет |
Да |
Нет |
Нет |
Общая блокировка с монопольным намерением (SIX) |
Да |
Нет |
Нет |
Нет |
Нет |
Нет |
Монопольная (X) |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Примечание
Блокировка IX совместима с режимом блокировки IX, поскольку IX указывает, что согласно намерению, будут обновлены не все строки, а только некоторые из них. Другим транзакциям также разрешается считывать или обновлять некоторые строки при условии, что они не являются одними и теми же строками, обновляемыми другими транзакциями.
Матрица совместимости блокировок
SQL Server Compact поддерживает следующие диапазоны блокировок:
- Sch-S, Sch-X, S, U, X, IS, IU, IX, SIU, SIX, UIX
Примечание
Блокировка стабильности схемы (Sch-S) совместима со всеми режимами блокировок, за исключением режима блокировки модификации схемы (Sch-M). Блокировка Sch-M несовместима ни с одним из режимов блокировок.
Дополнительные сведения о матрице совместимости блокировок см. в электронной документации SQL Server.