Настройка блокировок (параметр конфигурации сервера)

Применимо к:SQL Server

В этом разделе описывается настройка параметра конфигурации сервера locks в SQL Server с помощью среды SQL Server Management Studio или Transact-SQL. Параметр блокировки задает максимальное количество доступных блокировок, тем самым ограничивая объем памяти, ядро СУБД используемой для них sql Server. Значение по умолчанию равно 0, что позволяет ядро СУБД динамически выделять и освобождать структуры блокировки на основе изменяющихся системных требований.

Внимание

Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

В этом разделе

Перед началом

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

  • Это расширенный параметр, и изменять его следует только опытным администраторам баз данных или сертифицированным по SQL Server специалистам.

  • Когда сервер запускается с блокировками с значением 0, диспетчер блокировки получает достаточную память из ядро СУБД для начального пула 2500 структур блокировки. Если пул блокировки будет исчерпан, для пула будет запрошена дополнительная память.

    Как правило, если для пула блокировки требуется больше памяти, чем доступно в пуле памяти ядро СУБД, и доступно больше памяти компьютера (максимальное пороговое значение памяти сервера не достигнуто), ядро СУБД динамически выделяет память для удовлетворения запроса на блокировку. Однако если выделение памяти приведет к разбиению на страницы на уровне операционной системы (например, если на том же компьютере работает другое приложение, что и экземпляр SQL Server и используется эта память), больше места блокировки не выделяется. Пул динамической блокировки не получает более 60 процентов памяти, выделенной для ядро СУБД. После достижения 60 процентов памяти, полученной экземпляром ядро СУБД, или на компьютере больше памяти не доступно, дальнейшие запросы на блокировку создают ошибку.

    Чтобы SQL Server динамически использовал блокировки, рекомендуется настроить. Однако можно задать блокировки и переопределить возможность SQL Server динамически выделять ресурсы блокировки. Если для блокировок задано значение, отличное от 0, ядро СУБД не может выделить больше блокировок, чем значение, указанное в блокировках. Увеличьте это значение, если SQL Server отображает сообщение, превышенное количество доступных блокировок. Так как каждая блокировка занимает память (96 байт на блокировку), увеличение этого значения может потребовать увеличения объема памяти, выделенной для сервера.

  • Параметр locks также оказывает влияние при укрупнении блокировки. Если для блокировок задано значение 0, эскалация блокировки возникает, когда память, используемая текущими структурами блокировки, достигает 40 процентов пула памяти ядро СУБД. Если параметр locks установлен не в значение 0, укрупнение блокировки происходит, когда количество блокировок достигает 40 процентов от значения, указанного для параметра locks.

Безопасность

Разрешения

Разрешения на выполнение хранимой процедуры sp_configure без параметров или только с первым параметром по умолчанию предоставляются всем пользователям. Для выполнения процедуры sp_configure с обоими параметрами для изменения параметра конфигурации или запуска инструкции RECONFIGURE необходимо иметь разрешение ALTER SETTINGS на уровне сервера. Разрешение ALTER SETTINGS неявным образом предоставлено предопределенным ролям сервера sysadmin и serveradmin .

Использование среды SQL Server Management Studio

Задание параметра locks

  1. В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.

  2. Щелкните узел Дополнительно .

  3. В разделе Параллелизмвведите нужное значение параметра locks .

    Используйте параметр блокировки, чтобы задать максимальное количество доступных блокировок, тем самым ограничив объем памяти SQL Server для них.

Использование Transact-SQL

Задание параметра locks

  1. Соединитесь с ядром СУБД .

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере описывается использование процедуры sp_configure для присвоения параметру locks значения, позволяющего установить число блокировок, доступных всем пользователям, равным 20000.

USE AdventureWorks2022;  
GO  
sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'locks', 20000;  
GO  
RECONFIGURE;  
GO  

Дополнительные сведения см. в разделе Параметры конфигурации сервера (SQL Server).

Дальнейшие действия. После настройки параметра locks

Чтобы изменения вступили в силу, необходимо перезапустить сервер.

См. также

RECONFIGURE (Transact-SQL)
Параметры конфигурации сервера (SQL Server)
sp_configure (Transact-SQL)