Поделиться через


Распространение блокировки

Распространение блокировки — это процесс преобразования многих мелкогранулированных блокировок, например нескольких строк, в меньшее количество крупногранулированных блокировок, например одной таблицы. Распространение блокировки снижает нагрузку на систему.

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) автоматически распространяет блокировки строк и страниц в блокировки таблиц, когда транзакция превышает порог распространения. В SQL Server Compact Edition распространение блокировки может выполняться от строки к таблице или от страницы к таблице, но не от строкеи к странице. При распространении до уровня таблицы запросы не могут выполняться в отношении блокировок менее таблицы.

Например, когда транзакция использует строки из таблицы, SQL Server Compact Edition автоматически получает блокировки на соответствующие строки и накладывает блокировки намерения более высокого уровня на страницы и таблицу, содержащие эти строки. Блокируются и любые связанные страницы индексов. Когда число блокировок, удерживаемых транзакцией, превысит ее порог, SQL Server Compact Edition предпримет попытку изменения блокирования намерения на более сильную блокировку. Например, исключительная блокировка намерения (IX) сменится исключительной блокировкой (X). После получения более сильной блокировки все блокировки страницы на уровне страниц и строк, удерживаемые транзакцией в таблице, будут освобождены.

Распространение блокировки происходит на основе таблицы, когда запрос блокировки вызывает превышение порога распространения конкретной блокировки. Все блокировки ниже уровня таблицы независимо от их типа увеличивают порог. Порог распространения следует считать приблизительным значением, поскольку любые блокировки, необходимые для внутренних операций, увеличивают порог. Распространение может произойти ранее, чем ожидалось.

Если распространение невозможно из-за конфликта блокировок, транзакция продолжится и, возможно, позднее будет предпринята повторная попытка распространения.

Примечание.
Блокировки намерения, блокировки строк и страниц увеличивают распространение, если только они не являются временными блокировками таблиц. Когда общее число конечных блокировок, блокировок строк и страниц в конкретной таблице превышает порог распространения, происходит распространение.

Для управления распространением блокировки в сеансе установите порог распространения блокировки, как показано в следующем примере кода:

SET LOCK_ESCALATION 1000;

Этот параметр затронет все таблицы в базе данных. Значение по умолчанию — 100.

См. также

Основные понятия

Основные принципы блокировки
Отображение сведений о блокировке
Настройка блокировки

Справка и поддержка

Получение помощи по SQL Server Compact Edition