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

DBABootcamp

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

https://ithelp.ithome.com.tw/upload/images/20210302/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%'

https://ithelp.ithome.com.tw/upload/images/20210302/20135038EqXtigdF9U.jpg

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

https://ithelp.ithome.com.tw/upload/images/20210302/20135038LvgOu6nYV7.jpg


<<:  渗透测试-枚举(Enumeration)

>>:  C# windows form 在控件事件触发回圈 为何不会更新UI

Day23 - 【概念篇】Keycloak使用基本概念 - 第一部分: Realm

本系列文之後也会置於个人网站 Realm,中文或许会翻作「域」,但基本很像是程序开发上,语言层面提...

30天零负担轻松学会制作APP介面及设计【DAY 05】

大家好,我是YIYI,今天我要来介绍Whimsical。 关於Whimsical 在介绍如何使用前,...

Day4 第一个HTML网页制作

VS CODE安装好之後,就可以来认识HTML啦~ 开始写HTML前的步骤 首先,在桌面上新增一个资...

[Day25] 测试一定要写好写满?时间有限怎麽办?

既然要写测试,就先来了解前端常见的几种测试类型,从最大家最常听到的单元测试(Unit Testing...

[DAY 07] EC2 - 关於储存空间 EFS

回到储存空间部分, 因为有个 EFS也挺重要的 EFS (Elastic File System)...