SQL Server 死结 (deadlock) 的分析查询 - 心得分享

DBABootcamp

在 SQL Server, 死结的发生是因为有两个或多个工作(processes) 正在互相等待彼此所保留锁着的资源,而造成工作永久封锁彼此的情况。当 deadlock 发生时, SQL Server 会自行选择其中一个工作作为牺牲者,以错误来结束其交易。如下。

http://img2.58codes.com/2024/20135038n93p1gbaYE.jpg

一般来讲, DBA 会开启设定 trace flag (1222) 来蒐集 deadlock 的资讯,以便分析 deadlock 的发生。另外一个方法就是使用扩充事件 (Extended Events) 的 system_health 工作阶段 (Sessions) 来查询 deadlock 的发生原因。如下。

select event_data = CONVERT(XML, event_data)
from sys.fn_xe_file_target_read_file(N'system_health*.xel', NULL, NULL, NULL)
where event_data like '%xml_deadlock%'

http://img2.58codes.com/2024/20135038EqXtigdF9U.jpg

点选 xml,就可以查询到死结发生的原因。

http://img2.58codes.com/2024/20135038LvgOu6nYV7.jpg


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章