
# 锁\&事务
RDS for SQL Server是一款流行的关系型数据库管理系统，具有强大的死锁检测功能。当多个用户同时访问同一资源时，可能会出现死锁现象，即两个或多个进程互相等待对方释放资源，导致所有进程都无法继续执行。此时，RDS for SQL Server将选择其中一个进程终止（Kill），其他进程就可以完成其事务。
为解决上述问题，DAS提供了锁统计页面。通过查看该页面，可快速定位数据库中发生的多种类型的死锁。死锁的详细信息页面展示了事务开始执行的时间、会话ID、被锁资源详情、死锁的模式等信息，帮助您定位和优化引发死锁的问题SQL及其他异常。
#### 操作步骤
1. [登录DAS管理控制台](https://console.huaweicloud.com/das/#/das/overview)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-das/zh-cn_image_0000002413930520.png)，选择区域和项目。
3. 在左侧的导航栏中单击"DBA智能运维 \> 实例列表"页签，进入DBA智能运维实例列表页面。 
   您也可以在产品概览页面，单击"进入DBA智能运维"，进入DBA智能运维实例列表页面。
   
   
4. 在实例列表页面右上角，按照引擎、实例名称或者实例IP筛选实例。
5. 选择目标实例，单击"详情"，进入"实例概览"页面。
6. 单击"锁\&事务"，进入锁\&事务页面。 
   - 查看死锁数 选择需要查看的时间段（近1天、近1周、近2周、近1月或者自定义时间段，自定义时间段跨度需要在三天内），查看该时间段内死锁数。
     
   
   - 查看死锁变化趋势 在死锁数页面可以选择需要查看时间段内的死锁变化趋势。
     表1死锁变化趋势参数说明 
     | 参数           | 说明       |
     |:---|:---|
     | 死锁总数         | 所有死锁数量。  |
     | Key Lock     | 索引相关死锁数。 |
     | Object Lock  | 对象相关死锁数。 |
     | Rid Lock     | 行死锁数。    |
     | Page Lock    | 页死锁数。    |
     | Compile Lock | 编译死锁数。   |
        
     - 查看死锁详情信息 可以在死锁数页面可以选择需要查看时间段内的死锁详情信息，包含LastTranStarted、SPID、isVictim、Database、LogUsed、LockMode、WaitResourceDesc、ObjectOwned、ObjectRequested、WaitResource、HostName、LoginName、Status、ClientApp、SQL、操作。
       单击操作列的"死锁关系图"，可以查看死锁关系图。单击"下载"，可以下载当前死锁的详细内容。
       ![](https://support.huaweicloud.com/usermanual-das/public_sys-resources/note_3.0-zh-cn.png)
       下载的死锁关系图是XDL文件，可以通过[SQL Server Management Studio](https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15)（SSMS）客户端打开并查看。
       表2死锁详情信息参数说明 
       | 参数               | 说明                 |
       |:---|:---|
       | LastTranStarted  | 事务开启的时间。           |
       | SPID             | 开启事务的会话ID。         |
       | isVictim         | 该会话是否已被终止（Kill）。   |
       | Database         | 事务连接数据库名称。         |
       | LogUsed          | 会话已经生成的日志大小。单位：字节。 |
       | LockMode         | 锁模式。               |
       | WaitResourceDesc | 当前事务等待中的资源详情。      |
       | ObjectOwned      | 已经被锁住的对象。          |
       | ObjectRequested  | 当前事务请求加锁的对象。       |
       | WaitResource     | 当前事务等待中的资源。        |
       | HostName         | 当前事务的主机名称。         |
       | LoginName        | 当前事务的账号名称。         |
       | Status           | 当前事务的状态。           |
       | ClientApp        | 当前事务所使用的客户端名称。     |
       | SQL              | SQL语句详情。           |
       | 操作               | 可查看死锁关系图。          |
          
       
      
   
   
   
   
 
