SQL 死锁统计工具

0 sql-server deadlock excel

我公司的一个SQL数据库最近每天产生大量死锁(某天>100)

我正在尝试解决这些死锁的原因,我注意到许多死锁发生在同一个表中,我是数据库管理员的新手,所以我不知道对死锁报告进行统计的最佳方法是什么,就像我想计算和可视化事情,比如涉及哪些表,多少次,死锁通常发生的时间......所以我可以向我的老板报告,是否有一种简单的方法可以将所有死锁 xml 列导入到某些内容中像微软excel?

我在这里附上了死锁报告(.xel 文件)

死锁_报告

对不起,英语不是我的母语。

感谢您的时间,

Jos*_*ell 5

您应该使用开源存储过程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(第一个结果集的最后一列),以便更好地可视化所采取的锁。