
# 查看慢SQL
#### 操作场景
慢SQL是指执行耗时超过预设阈值的SQL语句。GaussDB数据库实例存在慢SQL时，用户可以通过SQL限流功能控制异常SQL的访问量或者并发量，保障服务的可用性。支持SQL计划绑定和解绑操作，以及通过查询表定义功能识别出SQL文本中的表名信息，并根据表名、Schema名以及库名进行表定义的查询。
#### 约束限制
- 因数据库内核未对慢SQL做持久化处理，在数据库实例发生重启、升级、规格变更、停止节点、启动节点、主备倒换、形态变更操作后，慢SQL视图将会被清空。
- GaussDB实例的操作系统需要为HCEOS。
- 仅集中式实例支持SQL计划。
- 数据库引擎版本大于等于V2.0-3.208.0，内核版本大于等于503.1.0.SPC1200的实例支持查询表定义。版本号查询方法请参见[查看云数据库GaussDB数据库和内核引擎版本](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_012.html#section2)。
- 慢SQL查询的最大时间跨度为一天。
- 不支持对系统级别用户进行SQL限流。
- 内核查询慢SQL列表支持"紧急运维"的能力，当普通通道资源耗尽而无法获取慢SQL列表时，打开"紧急通道"按钮后重新下发请求通过运维通道获取慢SQL列表，注意紧急通道的资源有限，仅在普通通道资源不足无法请求的时候使用紧急通道，运维操作完成后必须关闭紧急通道选项。
 
#### 查看慢SQL
1. [登录云数据库GaussDB控制台](https://console.huaweicloud.com/gaussdb/?locale=zh-cn#/gaussdb/management/list)。
2. 在"实例管理"页面，选择指定的实例，单击实例的名称，进入实例详情页面。
3. 单击"诊断优化 \> SQL诊断"。
4. 在"慢SQL"页签，用户可按需选择指定节点，时间范围，组合过滤SQL文本、归一化SQL ID以及其他扩展字段，单击查询按钮，获取慢SQL列表。 
   - 用户可自行选择时间区间，最大时间跨度为一天，可按照节点维度展示数据。
   
   - 过滤系统用户：开启后，将会跳过系统用户所执行的SQL记录。默认开启。
   
   - 用户可以选择"OR"或者"AND"查询，筛选框中可以填入需要组合过滤的多个SQL文本（不超过5个）。
   
   - 用户可以自行设置慢SQL阈值，只能设置阈值大于等于1秒，实时查询实例上大于等于该阈值的SQL执行信息。慢SQL阈值受参数log_min_duration_statement参数控制，默认查询3s以上的慢SQL，如果要查询3s以下的慢SQL需要到参数管理模块调整参数值。如何修改参数请参考[修改实例参数](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_166.html#ZH-CN_TOPIC_0000002649932710__section267472834710)。
   
   - 在数据库实例高负载场景下，用户可单击![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649933420.png "点击放大")打开紧急通道（默认关闭），以便快速获取慢SQL列表。
     图1紧急通道   
     ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649773530.png "点击放大")
     
     
   
   
   表1慢SQL部分参数说明 
   | **参数名称**   | **参数解释**                    |
   |:---|:---|
   | 归一化SQL ID  | 慢SQL的归一化SQL ID。             |
   | 节点名称/ID    | SQL执行的节点名称/ID。              |
   | 用户名        | 执行该SQL的用户。                  |
   | SQL文本      | 慢SQL的归一化模板语句。               |
   | SQL计划      | SQL执行计划。                    |
   | 慢SQL次数     | 限定时间跨度内该慢SQL总执行次数。          |
   | 平均执行时间（s）  | 限定时间跨度内该慢SQL模板的平均执行时间，单位：秒。 |
   | 平均CPU耗时（s） | CPU时间，单位：秒。                 |
   | 平均IO耗时（s）  | IO上的时间花费，单位：秒。              |
   | 平均返回行数     | SELECT返回的结果集行数。             |
   | 平均扫描行数     | 执行SQL扫描的行数。                 |
   | Buffer命中率  | 缓存命中率。                      |
      
   
   
5. 单击操作列中的"查看SQL"按钮，可查看采集的SQL和解析后的原始SQL。 
   开启track_stmt_parameter参数后，会把SQL文本中的变量替换成真实值，展示原始的SQL。对于track_stmt_parameter参数关闭时采集的SQL文本，无法获取到SQL参数变量的值，展示的内容为空。如何修改参数请参考[修改实例参数](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_166.html#ZH-CN_TOPIC_0000002649932710__section267472834710)。
   
   
6. 单击操作列的"SQL限流"可以对选中慢SQL的归一化SQL ID进行限流。如何创建SQL限流任务请参见[配置SQL限流](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_462.html)。
 
#### SQL计划
1. [登录云数据库GaussDB控制台](https://console.huaweicloud.com/gaussdb/?locale=zh-cn#/gaussdb/management/list)。
2. 在"实例管理"页面，选择指定的实例，单击实例的名称，进入实例详情页面。
3. 单击"诊断优化 \> SQL诊断"。
4. 在"慢SQL"页签，获取慢SQL列表。
5. 在"操作"列单击"更多 \> SQL计划"，显示"执行计划绑定详情"页面。 
   表2执行计划绑定详情列表字段说明 
   | 列表名称     | 说明                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|
   | 执行计划概览   | SQL执行计划。                                                                                                                                                                                                                                                                                                                           |
   | 唯一SQL ID | 数据库中SQL的唯一标识。                                                                                                                                                                                                                                                                                                                      |
   | Plan ID  | 当前SQL使用的计划的唯一标识。                                                                                                                                                                                                                                                                                                                   |
   | 执行代价     | 计划的总代价。                                                                                                                                                                                                                                                                                                                            |
   | 绑定状态     | 计划的状态。允许绑定中的计划解绑，未绑定的计划绑定。 - 绑定中  - 未绑定   |
      
   
   
6. 在弹出框中，单击执行计划绑定详情列表中"绑定状态"列的![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002680013091.png "点击放大")，选择绑定状态，单击"确定"后，完成绑定/解绑慢SQL执行计划。
 
#### 创建SQL PATCH
1. [登录云数据库GaussDB控制台](https://console.huaweicloud.com/gaussdb/?locale=zh-cn#/gaussdb/management/list)。
2. 在"实例管理"页面，选择指定的实例，单击实例的名称，进入实例详情页面。
3. 单击"诊断优化 \> SQL诊断"。
4. 在"慢SQL"页签，获取慢SQL列表。
5. 在"操作"列单击"更多 \> SQL PATCH"，显示"SQL PATCH详情"页面。 
   - 如果没创建SQL PATCH，输入PATCH名称、PATCH内容，单击"创建"，则可创建SQL PATCH。
     图2SQL PATCH   
     ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649773386.png "点击放大") 
   
   - 如果已创建SQL PATCH，则显示SQL PATCH信息。
     图3SQL PATCH详情   
     ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002679853101.png "点击放大")
     - 状态：单击![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649773378.png)，可开启或关闭SQL PATCH。关闭SQL PATCH，状态显示未生效，开启SQL PATCH，状态显示生效中。
     
     - 单击"删除"，则可删除SQL PATCH。
      
   
   
   
   
 
#### 查询表定义
1. [登录云数据库GaussDB控制台](https://console.huaweicloud.com/gaussdb/?locale=zh-cn#/gaussdb/management/list)。
2. 在"实例管理"页面，选择指定的实例，单击实例的名称，进入实例详情页面。
3. 单击"诊断优化 \> SQL诊断"。
4. 在"慢SQL"页签，选择"指定节点"以及"时间范围"，单击"查询"获取慢SQL列表。
5. 单击"操作"列的"更多 \> 表定义"。在"表定义"页面，查看"识别到的表"。 
   如未识别到表，请单击"添加识别到的表"填写表名后进行表定义查询。如识别结果有误，请单击"编辑"进行修改并保存后再进行表定义查询。
   
   
6. 单击指定表名前的![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002680013093.png)进行表定义的查询。
   
   图4表定义   
   ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649773374.png)
   
   
7. 单击表定义中的SQL语句查看具体的表定义信息。 
   图5表定义具体信息   
   ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649773388.png "点击放大")
   
   
 
