Конфигурация сервера: блокировки
Область применения: 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
В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.
Щелкните узел Дополнительно.
В разделе Parallelism введите требуемое значение параметра
locks
.locks
Используйте параметр, чтобы задать максимальное количество доступных блокировок, которое ограничивает объем памяти SQL Server, используемой для них.
Использование Transact-SQL
Соединитесь с ядром СУБД .
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере описывается использование процедуры 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
Дополнительные сведения см. в разделе "Параметры конфигурации сервера".
Дальнейшие действия. После настройки параметра блокировки
Чтобы изменения вступили в силу, необходимо перезапустить сервер.