配置 locks 服务器配置选项
本主题说明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2012 中配置 locks 服务器配置选项。 locks 选项设置可用锁的最大数目,以限制 SQL Server 数据库引擎为锁分配的内存量。 默认设置为 0,即允许数据库引擎根据不断变化的系统要求动态地分配和释放锁结构。
重要提示 |
---|
后续版本的 Microsoft SQL Server 将删除该功能。请不要在新的开发工作中使用该功能,并尽快修改当前还在使用该功能的应用程序。 |
本主题内容
开始之前:
建议
安全性
配置 locks 选项,使用:
SQL Server Management Studio
Transact-SQL
**跟进:**在配置 locks 选项之后
开始之前
建议
此选项是一个高级选项,仅应由有经验的数据库管理员或认证的 SQL Server 技术人员更改。
如果服务器启动时 locks 设置为 0,锁管理器将从数据库引擎中获取足够的内存,用于包含 2,500 个锁结构的初始池。 当锁池用完时,将另外为该池获取内存。
通常情况下,如果锁池需要的内存比数据库引擎内存池中可用的内存多,而具有更多可用的计算机内存(尚未达到 max server memory 的阈值),则数据库引擎将动态分配内存以满足锁的请求。 但是,如果内存分配导致操作系统级的分页(例如,如果另一个应用程序与 SQL Server 实例在同一台计算机上运行并使用该计算机的内存),则不会分配更多的锁空间。 动态锁池获取的内存不会超过分配给数据库引擎的内存的 60%。 如果锁池获取的内存达到了数据库引擎实例所获取内存的 60%,或计算机上没有更多的可用内存,则再发出针对锁的请求将生成错误。
推荐的配置是允许 SQL Server 动态地使用锁。 但是,可以通过设置 locks 来替代 SQL Server 动态分配锁资源的能力。 将 locks 设置为 0 以外的值后,数据库引擎分配的锁的数量不能大于在 locks 中指定的值。 如果 SQL Server 显示消息说明超过了可用锁数,请增大此值。 由于每一个锁都需要消耗内存(每一个锁需 96 字节),增大此值将增加服务器对内存的需要。
locks 选项也会影响何时进行锁升级。 如果 locks 设置为 0,则当前锁结构使用的内存达到数据库引擎内存池的 40% 时将进行锁升级。 如果 locks 未设置为 0,则当锁的数量达到 locks 的指定值的 40% 时将进行锁升级。
安全性
权限
默认情况下,所有用户都具备不带参数或仅带第一个参数的 sp_configure 的执行权限。 若要执行带两个参数的 sp_configure 以更改配置选项或运行 RECONFIGURE 语句,则用户必须具备 ALTER SETTINGS 服务器级别的权限。 ALTER SETTINGS 权限由 sysadmin 和 serveradmin 固定服务器角色隐式持有。
[返回页首]
使用 SQL Server Management Studio
配置 locks 选项
在对象资源管理器中,右键单击服务器并选择**“属性”**。
单击**“高级”**节点。
在**“并行”**之下,键入想要的 locks 选项的值。
使用 locks 选项设置可用锁的最大数目,以限制 SQL Server 为锁分配的内存量。
[返回页首]
使用 Transact-SQL
配置 locks 选项
连接到数据库引擎。
在标准菜单栏上,单击**“新建查询”**。
将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。 此示例说明如何使用 sp_configure 设置 locks 选项的值,将所有用户可用的锁数设置为 20000。
Use AdventureWorks2012 ;
GO
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'locks', 20000;
GO
RECONFIGURE;
GO
有关详细信息,请参阅服务器配置选项。
[返回页首]
跟进:在配置 locks 选项之后
必须重新启动服务器,设置才会生效。
[返回页首]