Распространение блокировок
Распространение блокировки — это процесс преобразования многих мелкогранулированных блокировок, например нескольких строк, в меньшее количество крупногранулированных блокировок, например одной таблицы. Распространение блокировки снижает нагрузку на систему.
Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) автоматически распространяет блокировки строк и страниц в блокировки таблиц, когда транзакция превышает порог распространения. В SQL Server Compact 3.5 распространение блокировки может выполняться от строки к таблице или от страницы к таблице, но не от строки к странице. При распространении до уровня таблицы запросы не могут выполняться в отношении блокировок менее таблицы.
Например, когда транзакция использует строки из таблицы, SQL Server Compact 3.5 автоматически получает блокировки на соответствующие строки и накладывает блокировки намерения более высокого уровня на страницы и таблицу, содержащие эти строки. Блокируются и любые связанные страницы индексов. Когда число блокировок, удерживаемых транзакцией, превысит ее порог, SQL Server Compact 3.5 предпримет попытку изменения блокирования намерения на более сильную блокировку. Например, исключительная блокировка намерения (IX) сменится исключительной блокировкой (X). После получения более сильной блокировки все блокировки страницы на уровне страниц и строк, удерживаемые транзакцией в таблице, будут освобождены.
Распространение блокировки происходит на основе таблицы, когда запрос блокировки вызывает превышение порога распространения конкретной блокировки. Все блокировки ниже уровня таблицы независимо от их типа увеличивают порог. Порог распространения следует считать приблизительным значением, поскольку любые блокировки, необходимые для внутренних операций, увеличивают порог. Распространение может произойти ранее, чем ожидалось.
Если распространение невозможно из-за конфликта блокировок, транзакция продолжится и, возможно, позднее будет предпринята повторная попытка распространения.
Примечание. |
---|
Блокировки намерения, блокировки строк и страниц увеличивают распространение, если только они не являются временными блокировками таблиц. Когда общее число конечных блокировок, блокировок строк и страниц в конкретной таблице превышает порог распространения, происходит распространение. |
Для управления распространением блокировки в сеансе установите порог распространения блокировки, как показано в следующем примере кода:
SET LOCK_ESCALATION 1000;
Этот параметр затронет все таблицы в базе данных. Значение по умолчанию — 100.
См. также
Основные понятия
Основные принципы блокировки
Отображение сведений о блокировке
Настройка блокировки
Справка и поддержка
Получение помощи (SQL Server Compact 3.5 с пакетом обновления 1)