Параметр locks

Используйте параметр locks, чтобы установить максимальное количество доступных блокировок, таким образом ограничивая объем памяти, используемой компонентом Database Engine для них. Значение 0 (по умолчанию) позволяет компоненту Database Engine динамически выделять и освобождать структуры блокировок в зависимости от изменяющихся системных требований.

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server эта возможность будет удалена. Не используйте ее при работе над новыми приложениями и как можно быстрее измените приложения, в которых она в настоящее время используется.

Когда сервер запускается с параметром locks, установленным в 0, диспетчер блокировок запрашивает у компонента Database Engine объем памяти, достаточный для начального пула в 2 500 структур блокировки. Если пул блокировки будет исчерпан, для пула будет запрошена дополнительная память.

Вообще, если требуется больше памяти, чем доступно для пула блокировки в пуле памяти компонента Database Engine, и больше компьютерной памяти доступно (порог максимальная память сервера не был достигнут), компонент Database Engine динамически распределяет память, чтобы удовлетворить потребности запроса блокировок. Однако, если распределение этой памяти вызовет подкачку страниц на уровне операционной системы (например, если другое приложение выполняется на том же самом компьютере как экземпляр SQL Server и использует эту память), большего объема пространства для блокировки не будет выделено. Динамический пул блокировки не получит больше чем 60 процентов памяти, выделенной для компонента Database Engine. После того как пул блокировки достигнет 60 процентов памяти, запрошенной экземпляром компонента Database Engine, или выяснится, что на компьютере нет больше доступной памяти, последующие запросы блокировок будут формировать ошибку.

Разрешение SQL Server использовать блокировки динамически является рекомендуемой конфигурацией. Однако можно установить параметр locks и отключить динамическое распределение ресурсов блокировок SQL Server. Когда параметр locks имеет значение, отличное от 0, компонент Database Engine не может распределить больше блокировок, чем указано в этом параметре. Увеличьте это значение, если SQL Server отображает сообщение о том, что превышено количество доступных блокировок. Поскольку каждая блокировка занимает память (96 байт на блокировку), увеличение этого значения может потребовать увеличения объема памяти, выделенной для сервера.

Параметр locks также оказывает влияние при укрупнении блокировки. Когда параметр locks установлен в 0, укрупнение блокировки происходит тогда, когда память, используемая текущими структурами блокировки, достигает 40 процентов от пула памяти компонента Database Engine. Если параметр locks установлен не в 0, укрупнение блокировки происходит, когда количество блокировок достигает 40 процентов от значения, указанного для параметра locks.

Параметр locks является дополнительным параметром. При использовании системной хранимой процедуры sp_configure для изменения этой настройки параметр locks можно изменить, только если параметр show advanced options установлен в 1. Настройка вступает в силу после перезапуска сервера.