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%';