SQL Server - Locks 对象

适用范围:SQL Server

Microsoft SQL Server 中的 SQLServer:Locks 对象提供了有关各种资源类型的 SQL Server 锁的信息。 锁加在 SQL Server 资源上(如在一个事务中读取或修改的行),以防止各种事务并发使用资源。 例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其他事务都不可以修改这一行。 尽可能少使用锁可提高并发性,从而改善性能。 可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。

下表介绍了 SQL Server 锁计数器。

SQL Server Locks 计数器 说明
Average Wait Time (ms) 每个导致等待的锁请求的平均等待时间(毫秒)。
Average Wait Time Base 仅限内部使用。
Lock Requests/sec 锁管理器每秒请求的新锁和锁转换数。
Lock Timeouts (timeout > 0)/sec 每秒超时的锁请求数,但不包括对 NOWAIT 锁的请求。
Lock Timeouts/sec 每秒超时的锁请求数,包括对 NOWAIT 锁的请求。
Lock Wait Time (ms) 锁在最后一秒内的总等待时间(毫秒)。
Lock Waits/sec 每秒要求调用者等待的锁请求数。
Number of Deadlocks/sec 每秒导致死锁的锁请求数。

SQL Server 可以锁定这些资源。

说明
_Total 所有锁的信息。
分配单元 分配单元的锁。
应用程序 锁定指定了应用程序的资源。
Database 锁定数据库(包括数据库中的所有对象)。
扩展盘区 锁定由连续的 8 个页构成的一组。
文件 锁定数据库文件。
Heap/B-tree 堆或 B 树。 锁定数据页堆,或索引的 B 树结构。
锁定索引中的某行。
Metadata 锁定一些目录信息(又称为元数据)。
Object 锁定表、存储过程、视图等(包括所有数据和索引)。 对象可以是具有条目的任何 sys.all_objects内容。
OIB 联机索引生成锁的锁定资源,专用于联机索引生成 LOB 跟踪表。
页码 锁定数据库中 8 KB 页。
RID 行 ID。 锁定一个堆中的一行。
RowGroup 列存储索引行组的锁定资源。
Xact 事务的锁定资源。

注意

文档在提到索引时一般使用 B 树这个术语。 在行存储索引中,数据库引擎实现了 B+ 树。 这不适用于列存储索引或内存优化表上的索引。 有关详细信息,请参阅 SQL Server 以及 Azure SQL 索引体系结构和设计指南

示例

使用 sys.dm_os_performance_counters 动态管理视图上的此 T-SQL 查询,开始浏览此对象中的查询性能计数器:

SELECT * FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Locks%';