
# 管理TaurusDB锁和事务
#### 操作场景
通过智能DBA功能查看数据库实例是否有元数据锁和InnoDB锁等待，以及查看最近死锁分析和全量死锁分析的数据。
#### 功能介绍
表1功能列表 
| 功能        | 介绍                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|
| 元数据锁      | 元数据锁（Meta Data Lock, 简称MDL），其作用是用于解决DDL操作与DML操作的一致性。通常DDL操作需要获取MDL写锁，并且MDL锁一旦发生，就可能会对数据库的性能造成影响，因为后续对该表的任何SELECT、DML、DDL操作都会被阻塞，造成连接积压。 展示了当前时刻（实时）数据库的MDL锁的信息，可以快速帮助定位MDL问题、终止持有MDL锁的会话，从而恢复被阻塞的操作。 - DML锁不在当前功能的范围之内，可以使用innodb锁等待进行分析和查看。  - 最多显示1000条数据。                                                                                                                                                                                                                                                                                                                                              |
| Innodb锁等待 | 当前功能展示了当前时刻（实时）数据库的DML操作之前的锁等待的信息，可以快速定位多个会话因同时更新同一条数据，而产生的会话等待和阻塞问题，并且支持快速终止持有锁的源头会话，从而恢复被阻塞的操作。 - DDL锁不在当前功能的范围之内，可以使用元数据锁进行分析和查看。  - 需要开启性能模式才能查看锁信息，执行**SHOW GLOBAL VARIABLES LIKE "performance_schema"**或者在TaurusDB参数修改页面查看是否开启。                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 死锁分析      | 该功能基于**SHOW ENGINE INNODB STATUS**返回的最近一次死锁日志进行分析。如果发生过多次死锁，只会对最近一次死锁进行分析。 当前仅支持查看最近7天创建的锁分析数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 全量死锁分析    | 该功能当打开全量死锁分析开关后，会定时对错误日志进行分析，解析其中的死锁信息，并进行全面的死锁分析。 - 需要TaurusDB内核版本大于等于2.0.45.230900。内核版本的查询方法请参见[如何查看云数据库 TaurusDB实例的版本号](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0141.html)。  - 依赖如下参数： 需要开启"innodb_print_all_deadlocks"参数。 需要开启"innodb_deadlock_detect"参数，该参数默认已打开。   - 最多显示10000条数据。  - 当前仅支持查看最近7天创建的锁分析数据。   |
   
#### 操作步骤
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在"实例管理"页面，选择目标实例，单击实例名称，进入"实例概览"页签。
4. 在左侧导航栏选择"智能DBA助手"下的"锁\&事务"，输入管理员密码登录当前实例。 
   图1登录实例   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002563298488.png "点击放大")
   
   
   
5. 在"元数据锁"页签，根据需要选择会话ID、锁状态、锁类型、数据库名等进行查询。 
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002593897841.png "点击放大")
   
   
   
6. 在查询结果中，查看是否存在持有MDL锁的会话。 
   若存在，单击"kill会话"。
   
   
7. 在"Innodb锁等待"页签，查看是否存在锁等待。 
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002593891371.png "点击放大")
   
   
   
8. 在"最近死锁分析"页签，查看最近创建的锁分析数据。可以单击"创建锁分析"，创建一条锁分析数据。 
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002134723057.png "点击放大")
   
   
9. 在"全量死锁分析"页签，需先打开"全量死锁分析开关"及依赖的innodb_print_all_deadlocks参数，可查看以后出现的全量死锁分析数据。 
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002342365678.png "点击放大")
   
   
   
 
#### 常见问题
[如何查看TaurusDB数据库的死锁日志](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0103.html)
