Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2025 (17.x) и более поздних версий
Параметр max lock manager cache memory (%) конфигурации сервера ограничивает объем памяти, которую кэш диспетчера блокировки может использовать в процентах от общего объема зафиксированной памяти SQLOS. По умолчанию для конфигурации задано значение 20 %.
Availability
Этот параметр конфигурации доступен на следующих платформах и версиях SQL:
- SQL Server 2025 (17.x) Накопительное обновление 5 (CU 5) и более поздние версии
Remarks
При освобождении блокировки память, используемая структурой блокировки, не освобождается, но кэшируется диспетчером блокировки, чтобы избежать затрат на выделение памяти при последующем приобретении блокировки и повышения производительности.
До SQL Server 2025 (17.x) CU 5, а также в предыдущих версиях SQL Server, кэш диспетчера блокировок может увеличиваться до максимального размера памяти диспетчера блокировок, который составляет 60 % от общего объема выделенной памяти SQLOS. Рабочая нагрузка может увеличить размер кэша диспетчера блокировки до этого предела. Например, такая редкая ситуация может возникнуть в условиях высокой нагрузки, вызванной большим числом параллельно выполняемых запросов, когда для экземпляра ядра СУБД отключена эскалация блокировок. Если кэш диспетчера блокировок становится слишком большим, буферный пул, кэш планов и другие кэши памяти экземпляра SQL Server уменьшаются, что снижает производительность.
В SQL Server 2025 (17.x) CU 5 и более поздних версий максимальный размер кэша диспетчера блокировки по умолчанию ограничен 20 процентами. Память менеджера блокировок по-прежнему может увеличиваться до 60 процентов выделенной памяти SQLOS, если это требуется рабочей нагрузкой. Однако при освобождении блокировок память освобождается, а не кэшируется, если кэш диспетчера блокировки уже достиг заданного предела.
Устанавливать для конфигурации max lock manager cache memory (%) значение более 20 % не рекомендуется, но это поддерживается для обеспечения обратной совместимости. Можно задать значение в диапазоне от 20 до 60 процентов.
Общий объем памяти диспетчера блокировок можно отслеживать с помощью sys.dm_os_memory_clerks, где OBJECTSTORE_LOCK_MANAGER — это тип диспетчера памяти. Для неактивного экземпляра компонента Database Engine сообщаемое значение представляет собой размер памяти кэша диспетчера блокировок.
Examples
А. Задайте максимальный размер памяти кэша диспетчера блокировки
В следующем примере максимальный объем памяти кэша диспетчера блокировки составляет 25 процентов:
EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;
EXECUTE sp_configure 'max lock manager cache memory (%)', 25;
RECONFIGURE;
B. Мониторинг памяти диспетчера блокировок
В следующем примере показан текущий размер памяти диспетчера блокировки. Это значение включает память, занимаемую удерживаемыми блокировками, если таковые имеются, а также кэшированную память для повышения производительности последующих операций захвата блокировок.
SELECT SUM(pages_kb) / 1024. AS lock_manager_cache_memory_mb
FROM sys.dm_os_memory_clerks
WHERE type = 'OBJECTSTORE_LOCK_MANAGER';