Конфигурация сервера: блокировки

Область применения: SQL Server

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

Внимание

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

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

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

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

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

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

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

Разрешения

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

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

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

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

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

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

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

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

  2. На стандартной панели выберите пункт Создать запрос.

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

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'locks', 20000;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

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

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

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