SQL sp_lock

本文介绍了SQLServer中的sp_lock系统存储过程,用于显示当前活动会话的锁信息,包括spid、dbid、objid、type、resource和lock模式,以及状态如GRANT和WAIT。这些信息有助于理解数据库并发控制和性能优化。
摘要由CSDN通过智能技术生成
--列出所有锁
sp_lock

返回结果:数据库引擎实例中当前处于活动状态的所有会话的锁。

  • spid:进程ID号
  • dbid:数据库id
  • objid :对象的ID,一般为存储过程等。
  • indid :持有锁的索引的ID
  • type :类型,锁的类型
    • RID         表中单个行的锁
    • KEY        索引中保护可串行行事务中一系列的锁
    • PAG        数据页或索引页的锁
    • TAB         整个表的锁(包括数据和索引)
    • DB           数据库的锁
    • FIL           数据库文件的锁
    • APP         指定应用程序资源的锁
    • MD           元数据或目录信息的锁
    • HBT         锁定堆或B树 (此信息在SQL server中不完整  还没实际处理过,不懂这是啥)
    • AU           分配单元的锁 (此信息在SQL server中不完整 不懂+1)

 

  • resource :资源
    • 表示被锁定的资源的值。值的格式取决于“类型”中标识的资源类型。
    • RID 格式为 fileid:pagenumber:rid  
      •  fileid 标识包含页的文件,pagenumber 标识包含行的页,rid 标识页上的特定行。 fileid 与 sys.database_files 目录视图中 的file_id 列匹配。
    • KEY:数据库引擎在内部使用的十六进制数
    • PAG:格式为 fileid:pagenumber 的数字,
      • 其中 fileid 标识包含页的文件,pagenumber 标识页。
    • EXT:标识区中的第一页的数字。 该数字的格式为 fileid:pagenumber。
    • TAB:未提供任何信息,因为已在 ObjId 列中标识该表。
    • DB:没有提供任何信息,因为 数据库已在 dbid 列中标识。
    • FIL:文件的标识符,它与 sys.database_files 目录视图中 的file_id 列匹配。
    • APP:被锁定的应用程序资源的唯一标识符。 采用格式 DbPrincipalId:<前两到 16 个字符的资源字符串><哈希值>。
    • MD:随资源类型而变化。 有关详细信息,请参阅 sys.dm_tran_locks (Transact-SQL ) 中resource_description列的说明。
       
    • HBT:没有提供任何信息。 请改用 sys.dm_tran_locks 动态管理视图。
       
    • AU:没有提供任何信息。 请改用 sys.dm_tran_locks 动态管理视图。
  • model 模式
    • 所请求的锁的模式
    • NULL  不授予对资源的访问权限。占位符
    • Sch-S 架构稳定性。确保在任何会话中持有对架构元素(例如表或索引)的架构稳定性锁时,不删除该架构元素。
    • Sch-M = 架构修改。 必须由要更改指定资源架构的任何会话持有。 确保没有其他会话正在引用所指示的对象
    • S = 共享。 授予持有锁的会话对资源的共享访问权限。
       
    • U = 更新。 指示对最终可能更新的资源获取的更新锁。 用于防止一种常见的死锁,这种死锁在多个会话锁定资源以便稍后对资源进行更新时发生。
       
    • X = 排他。 授予持有锁的会话对资源的独占访问权限。
       
    • IS = 意向共享。 指示有意将 S 锁放置在锁层次结构中的某个从属资源上。
       
    • IU = 意向更新。 指示有意将 U 锁放置在锁层次结构中的某个从属资源上。
       
    • IX = 意向排他。 指示有意将 X 锁放置在锁层次结构中的某个从属资源上。
       
    • SIU = 共享意向更新。 指示对有意在锁层次结构中的从属资源上获取更新锁的资源进行共享访问。
       
    • SIX = 共享意向排他。 指示对有意在锁层次结构中的从属资源上获取排他锁的资源进行共享访问。
       
    • UIX = 更新意向排他。 指示对有意在锁层次结构中的从属资源上获取排他锁的资源持有的更新锁。
       
    • BU = 大容量更新。 用于大容量操作。
       
    • RangeS_S = 共享键范围和共享资源锁。 指示可串行范围扫描。
       
    • RangeS_U = 共享键范围和更新资源锁。 指示可串行更新扫描。
       
    • RangeI_N = 插入键范围和 Null 资源锁。 用于在将新键插入索引前测试范围。
       
    • RangeI_S = 键范围转换锁。 由 RangeI_N 和 S 锁的重叠创建。
       
    • RangeI_U = 由 RangeI_N 和 U 锁的重叠创建的键范围转换锁。
       
    • RangeI_X = 由 RangeI_N 和 X 锁的重叠创建的键范围转换锁。
       
    • RangeX_S = 由 RangeI_N 和 RangeS_S 锁的重叠创建的键范围转换锁 锁。
       
    • RangeX_U = 由 RangeI_N 和 RangeS_U 锁的重叠创建的键范围转换锁。
       
    • RangeX_X = 排他键范围和排他资源锁。 这是在更新范围中的键时使用的转换锁。

 

  • state 状态
    • CNVRT:锁正在从另一种模式进行转换,但是转换被另一个持有锁(模式相冲突)的进程阻塞。
       
    • GRANT:已获取锁。
       
    • WAIT:锁被另一个持有锁(模式相冲突)的进程阻塞。

详细信息请参考:👇

SQL Server 官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值