更新时间:2024-10-14 GMT+08:00

死锁分析

操作场景

RDS for SQL Server具有强大的死锁检测功能。当多个用户同时访问同一资源时,可能会出现死锁现象,即两个或多个进程互相等待对方释放资源,导致所有进程都无法继续执行。此时,SQL Server将选择其中一个进程终止(Kill),其他进程就可以完成其事务。

为解决上述问题,提供了锁统计页面。通过查看该页面,可快速定位数据库中发生的多种类型的死锁。死锁的详细信息页面展示了事务开始执行的时间、会话ID、被锁资源详情、死锁的模式等信息,帮助您定位和优化引发死锁的问题SQL及其他异常。

不升级高级智能运维包的情况下,最多只保留7天的记录。

操作步骤

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
  5. 在左侧导航栏选择“智能DBA助手 > 历史诊断”。
  6. 选择“死锁分析”页签。

    • 查看死锁数

      选择需要查看的时间段(近1天、近1周、近2周、近1月或者自定义时间段),查看该时间段内死锁数。

    • 查看死锁变化趋势

      在死锁数页面可以选择需要查看时间段内的死锁变化趋势。

      表1 死锁变化趋势参数说明

      参数

      说明

      死锁总数

      所有死锁数量。

      Key Lock

      索引相关死锁数。

      Object Lock

      对象相关死锁数。

      Rid Lock

      行死锁数。

      Page Lock

      页死锁数。

      Compile Lock

      编译死锁数。

      • 查看死锁详情信息

        选择需要查看时间段内的死锁详情信息。

        单击操作列的“死锁关系图”,可以查看死锁关系图。单击“下载”,可以下载当前死锁的详细内容。

        下载的死锁关系图是XDL文件,可以通过SQL Server Management Studio(SSMS)客户端打开并查看。

        表2 死锁详情信息参数说明

        参数

        说明

        LastTranStarted

        事务开启的时间。

        SPID

        开启事务的会话ID。

        isVictim

        该会话是否已被终止(Kill)。

        Database

        事务连接数据库名称。

        LogUsed

        会话已经生成的日志大小。单位:字节。

        LockMode

        锁模式。

        WaitResourceDesc

        当前事务等待中的资源详情。

        ObjectOwned

        已经被锁住的对象。

        ObjectRequested

        当前事务请求加锁的对象。

        WaitResource

        当前事务等待中的资源。

        HostName

        当前事务的主机名称。

        LoginName

        当前事务的账号名称。

        Status

        当前事务的状态。

        ClientApp

        当前事务所使用的客户端名称。

        SQL

        SQL语句详情。

        操作

        可查看死锁关系图。