服务器配置:最大锁管理器缓存内存(%)

适用于: SQL Server 2025 (17.x) 及更高版本

服务器 max lock manager cache memory (%) 配置选项将锁管理器缓存可以使用的内存量限制为 SQLOS 提交内存总量的百分比。 默认情况下,配置设置为 20%。

Availability

以下 SQL 平台和版本提供了此配置选项:

  • SQL Server 2025 (17.x) 累积更新 (CU) 5 及更高版本

Remarks

释放锁时,锁结构使用的内存不会释放,而是由锁管理器缓存,以避免后续锁获取中的内存分配开销并提高性能。

在 SQL Server 2025 (17.x) CU 5 之前以及更早版本的 SQL Server 中,锁管理器缓存可增长到锁管理器内存的最大上限,该上限为 SQLOS 已提交内存总量的 60%。 工作负荷可以增大锁管理器缓存的大小,达到此限制。 例如,当数据库引擎实例禁用了锁升级时,这种不常见的情况可能会在大规模并发查询工作负载中发生。 如果锁管理器缓存变得很大,SQL Server 实例的缓冲池、计划缓存和其他内存缓存就会缩小,从而降低性能。

在 SQL Server 2025 年 (17.x) CU 5 及更高版本中,锁管理器缓存的最大大小默认限制为 20%。 如果工作负载需要,锁管理器内存仍可增长到 SQLOS 已提交内存的 60%。 但是,在释放锁时,如果锁管理器缓存已达到其配置的上限,则内存会被释放,而不是被缓存。

不建议将 max lock manager cache memory (%) 配置设置为大于 20% 的值,但支持向后兼容。 可以在 20-60% 范围内设置值。

可以使用 sys.dm_os_memory_clerks 监视锁管理器内存的总大小,其中 OBJECTSTORE_LOCK_MANAGER 为内存分配对象类型。 在空闲数据库引擎实例上,报告的值是锁管理器缓存内存的大小。

示例

答: 设置锁管理器缓存内存的最大大小

以下示例将最大锁管理器缓存内存设置为 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';