首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sql server中获取表中的死锁数?

如何在sql server中获取表中的死锁数?
EN

Database Administration用户
提问于 2017-09-20 01:20:12
回答 1查看 1.9K关注 0票数 1

我在Server 2014中遇到了死锁。

我知道我们可以使用Server中的性能计数器从https://learn.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-locks-object获得死锁总数:死锁数/秒

我想知道是否有办法使每个表的死锁计数?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-09-20 12:20:44

xml_deadlock_report扩展事件会话中使用system_health非常容易。

代码语言:javascript
复制
IF OBJECT_ID('tempdb..[#DeadlockData]') IS NOT NULL
    DROP TABLE #DeadlockData;

WITH xml
AS ( SELECT CAST(event_data AS XML) AS XMLDATA
     FROM   sys.fn_xe_file_target_read_file('system_health*.xel', NULL, NULL, NULL) )
SELECT xml.XMLDATA
INTO   #DeadlockData
FROM   xml
WHERE  xml.XMLDATA.value('(/event/@name)[1]', 'varchar(255)') = 'xml_deadlock_report';


WITH death_indeed
AS ( SELECT ca.x.value('@objectname', 'VARCHAR(256)') AS object_name
     FROM   #DeadlockData AS dd
     CROSS APPLY dd.XMLDATA.nodes('//resource-list/*') AS ca(x) )
SELECT   death_indeed.object_name, COUNT_BIG(*) AS deaths
FROM     death_indeed
GROUP BY death_indeed.object_name

在创建了一些不同的死锁之后,我得到了以下内容:

代码语言:javascript
复制
object_name                deaths
StackOverflow.dbo.Users    9
StackOverflow.dbo.Posts    9
票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/186377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档