我公司的一个SQL数据库最近每天产生大量死锁(某天>100)
我正在尝试解决这些死锁的原因,我注意到许多死锁发生在同一个表中,我是数据库管理员的新手,所以我不知道对死锁报告进行统计的最佳方法是什么,就像我想计算和可视化事情,比如涉及哪些表,多少次,死锁通常发生的时间......所以我可以向我的老板报告,是否有一种简单的方法可以将所有死锁 xml 列导入到某些内容中像微软excel?
我在这里附上了死锁报告(.xel 文件)
对不起,英语不是我的母语。
感谢您的时间,
您应该使用开源存储过程sp_BlitzLock
来分析这些死锁。它将在时间方面为您提供您正在寻找的内容,哪些表/对象最常涉及死锁等。
我下载了你的 .xel 文件并像这样运行 proc:
EXEC master.dbo.sp_BlitzLock
@EventSessionPath = 'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Log\DL_0_132091861398080000.xel';
Run Code Online (Sandbox Code Playgroud)
例如,输出告诉我B7R2_CHKVN.dbo.B331GeneralLedger
在此事件会话中捕获的 217 个死锁(在该数据库的 383 个死锁总数中)涉及。
将@ObjectName = 'B7R2_CHKVN.dbo.B331GeneralLedger'
参数添加到过程调用中会将事情过滤为仅涉及该对象的死锁。
请注意,数据库名称有点不稳定,因为它是按 id 提取名称,而且我的实例与您的实例具有不同的数据库
这将让您开始处理每个死锁,看看是否可以找到所涉及的查询模式。考虑在 SentryOne 计划资源管理器中加载死锁 XML(第一个结果集的最后一列),以便更好地可视化所采取的锁。
归档时间: |
|
查看次数: |
323 次 |
最近记录: |