电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

SQL Server死锁资源的查看

来源:金蝶云社区作者:金蝶2024-09-233

SQL Server死锁资源的查看

        出现死锁,或者阻塞时,针对聚集索引的等待资源为key:dbid:hobtid(keyhashvalue),一般通过上下文,很容易知道对应的表,索引是什么,如果想知道对应表中哪条数据时,就比较麻烦了。

    如下图image.webp

   sql server提供了%%lockres%%函数,其对应值就是keyhashvalue。为键值的哈希码,通过这个码我们就能知道对应的行记录,注意这个值是同时包括括号的。

    如:

image.webp

    以上面的死锁为例,可以获取对应的数据行

image.webp

    如果表没有聚集索引时,SQL SERVER存储数据将会以堆的方式存在,那么此时将显示为page的模式,如:

image.webp    

    可以看到,这些数据,都在一个页上。如果插入更多数据,将看到下面的结果:

image.webp

    上面的数据在分配上, 215和998间值是不连续的,这也证明了,sql server下需要有聚集才能保证数据的有序性,才能更好的避免死锁。

    如果想看到这些记录在那个数据页上,可以通过%%physloc%%与sys.fn_physlocformatter获取。

image.webp


    

附:可以通过下面的脚本,根据数据库名和死锁KEY资源获取数据

declare @databaseName varchar(100) = 'test'  --数据库名declare @keyValue varchar(100) = 'KEY: 8:72057845012037632 (37f01f22e733)'  --资源declare @lockres varchar(100)declare @hobbitID bigint select @hobbitID = convert(bigint, RTRIM(SUBSTRING(@keyValue, CHARINDEX(':', @keyValue, CHARINDEX(':', @keyValue) + 1) + 1, CHARINDEX('(', @keyValue) - CHARINDEX(':', @keyValue, CHARINDEX(':', @keyValue) + 1) - 1))) select @lockRes = RTRIM(SUBSTRING(@keyValue, CHARINDEX('(', @keyValue) + 1, CHARINDEX(')', @keyValue) - CHARINDEX('(', @keyValue) - 1)) declare @objectName sysnamedeclare @ObjectLookupSQL as

SQL Server死锁资源的查看

出现死锁,或者阻塞时,针对聚集索引的等待资源为key:dbid:hobtid(keyhashvalue),一般通过上下文,很容易知道对应的表,索引是什...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信