死锁分析
操作场景
RDS for SQL Server具有强大的死锁检测功能。当多个用户同时访问同一资源时,可能会出现死锁现象,即两个或多个进程互相等待对方释放资源,导致所有进程都无法继续执行。此时,SQL Server将选择其中一个进程终止(Kill),其他进程就可以完成其事务。
为解决上述问题,提供了锁统计页面。通过查看该页面,可快速定位数据库中发生的多种类型的死锁。死锁的详细信息页面展示了事务开始执行的时间、会话ID、被锁资源详情、死锁的模式等信息,帮助您定位和优化引发死锁的问题SQL及其他异常。
不升级高级智能运维包的情况下,最多只保留7天的记录。
操作步骤
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域。
- 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
- 在左侧导航栏选择“智能DBA助手 > 历史诊断”。
- 选择“死锁分析”页签。
- 查看死锁数
- 查看死锁变化趋势
图2 死锁变化趋势
表1 死锁变化趋势参数说明 参数
说明
死锁总数
所有死锁数量。
Key Lock
索引相关死锁数。
Object Lock
对象相关死锁数。
Rid Lock
行死锁数。
Page Lock
页死锁数。
Compile Lock
编译死锁数。
- 查看死锁详情信息
单击操作列的“死锁关系图”,可以查看死锁关系图。单击“下载”,可以下载当前死锁的详细内容。
下载的死锁关系图是XDL文件,可以通过SQL Server Management Studio(SSMS)客户端打开并查看。
图4 死锁关系图
表2 死锁详情信息参数说明 参数
说明
LastTranStarted
事务开启的时间。
SPID
开启事务的会话ID。
isVictim
该会话是否已被终止(Kill)。
Database
事务连接数据库名称。
LogUsed
会话已经生成的日志大小。单位:字节。
LockMode
锁模式。
WaitResourceDesc
当前事务等待中的资源详情。
ObjectOwned
已经被锁住的对象。
ObjectRequested
当前事务请求加锁的对象。
WaitResource
当前事务等待中的资源。
HostName
当前事务的主机名称。
LoginName
当前事务的账号名称。
Status
当前事务的状态。
ClientApp
当前事务所使用的客户端名称。
SQL
SQL语句详情。
操作
可查看死锁关系图。
- 查看死锁详情信息