
# 查看Top SQL
#### 操作场景
Top SQL是指在指定时间范围内，消耗资源最多（如CPU、IO、内存）、执行时间最长、执行频率最高的SQL语句。GaussDB支持通过WDR快照查询指定时间内的Top SQL，从多个维度的资源监控、诊断SQL运行情况。
#### 约束限制
- Top SQL数据是从指定时间区间内，两个可用快照生成的性能报告中获取的，两次快照之间内不能有内核重置事件（节点重启、主备切换、DROP DATABASE等）。
- 查询期间，指定时间区间内至少要有两个可以对比的快照，才可能会有Top SQL的数据，默认一个小时生成一次快照。
 
#### 查看Top SQL
1. [登录云数据库GaussDB控制台](https://console.huaweicloud.com/gaussdb/?locale=zh-cn#/gaussdb/management/list)。
2. 在"实例管理"页面，选择指定的实例，单击实例的名称，进入实例详情页面。
3. 单击"诊断优化 \> SQL诊断"。
4. 在"Top SQL"页签，用户可按需选择指定节点，时间范围，组合过滤SQL文本、归一化SQL ID以及其他扩展字段，单击查询按钮，获取Top SQL列表。 
   - 用户可自行选择时间区间，最大时间跨度为一天，可按照节点维度展示数据。
   
   - 过滤系统用户：开启后，将会跳过系统用户所执行的SQL记录。默认开启。
   
   - 用户可以选择"OR"或者"AND"查询，筛选框中可以填入需要组合过滤的多个SQL文本（不超过5个）。
   
   
   表1Top SQL字段说明 
   | 字段名称      | 描述                                                                        |
   |:---|:---|
   | 归一化SQL ID | 归一化SQL ID。                                                                |
   | 节点名称/ID   | SQL执行节点的ID及名称。                                                            |
   | 用户名       | 执行SQL的用户。                                                                 |
   | SQL 文本    | 归一化SQL文本。                                                                 |
   | 调用频率占比    | 查询时间区间内某条SQL的调用次数占总调用次数的比例。                                               |
   | CPU开销占比   | 查询时间区间内某条SQL的CPU开销占总CPU开销的比例。                                             |
   | IO开销占比    | 查询时间区间内某条SQL的IO开销占IO总开销的比例。                                               |
   | 调用次数      | 查询时间区间内某条SQL的调用次数。                                                        |
   | 返回元组数     | 查询时间区间内某条SQL的SELECT返回的结果集行数的差值。                                           |
   | 读取元组数     | 查询时间区间内某条SQL的顺序扫描行的差值。                                                    |
   | 平均时间开销    | 查询时间区间内某条SQL的平均时间开销。单位：ms。                                                |
   | 总时间开销     | 查询时间区间内某条SQL的总时间开销。 单位：ms。  |
   | CPU开销     | 查询时间区间内某条SQL的CPU开销。 单位：ms。 |
   | IO开销      | 查询时间区间内某条SQL的IO开销。 单位：ms。  |
   | 最小执行时间    | 查询时间区间内某条SQL的最小执行时间。单位：ms。                                                |
   | 最大执行时间    | 查询时间区间内某条SQL的最大执行时间。单位：ms。                                                |
   | SQL命中率    | 查询时间区间内某条SQL命中率（命中行数/扫描行数）。                                               |
      
   
   
 
#### 创建SQL PATCH
1. [登录云数据库GaussDB控制台](https://console.huaweicloud.com/gaussdb/?locale=zh-cn#/gaussdb/management/list)。
2. 在"实例管理"页面，选择指定的实例，单击实例的名称，进入实例详情页面。
3. 单击"诊断优化 \> SQL诊断"。
4. 在"Top SQL"页签，单击"操作"列的"SQL PATCH"，显示"SQL PATCH详情"页面。 
   - 如果没创建SQL PATCH，输入PATCH名称、PATCH内容，单击"创建"，则可创建SQL PATCH。
     图1SQL PATCH   
     ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649773386.png "点击放大") 
   
   - 如果已创建SQL PATCH，则显示SQL PATCH信息。
     图2SQL PATCH详情   
     ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002679853101.png "点击放大")
     - 状态：单击![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649773446.png)，可开启或关闭SQL PATCH。关闭SQL PATCH，状态显示未生效，开启SQL PATCH，状态显示生效中。
     
     - 单击"删除"，则可删除SQL PATCH。
      
   
   
   
   
 
