
# SQL全链路分析
#### 操作场景
在日常业务SQL执行问题排查时，通常需要快速定位具体请求的执行链路，但仅依赖常规日志难以准确关联到某一条SQL或某个事务，导致问题定位效率低下。GaussDB支持通过唯一SQL ID或事务ID直接查询SQL执行链路，帮助用户快速定位问题根因，提升排查效率。
#### 前提条件
- 登录账号需要具备授权项"gaussdb:instance:listSqlLink"。

- 已开启过全量SQL，存在有效采集数据。
 
#### 约束限制
- 事务ID为0时不支持使用事务ID查询链路信息。
- 唯一SQL ID为0时没有链路信息。
- GaussDB实例的数据库引擎版本需要大于等于V2.0-8.0.1，内核版本大于等于505.0.0。版本号查询方法请参见[查看云数据库GaussDB数据库和内核引擎版本](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_012.html#section2)。
 
#### 操作步骤
1. [登录云数据库GaussDB控制台](https://console.huaweicloud.com/gaussdb/?locale=zh-cn#/gaussdb/management/list)。
2. 在"实例管理"页面，选择指定的实例，单击实例的名称，进入实例详情页面。
3. 单击"诊断优化 \> SQL诊断"，选择全量SQL。
4. 进入"全量SQL统计"页签，单击![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002680012717.png "点击放大")展开目标行数据。或进入"全量单条SQL"页签。
5. 单击"事务ID"或在操作列中单击"更多 \> 链路耗时"跳转至SQL全链路。 
   - 单击全量SQL列表中操作列的"更多 \> 链路耗时"按钮，跳转至全链路页面，展示该条SQL的执行链路耗时信息。
   
   - 单击全量SQL列表中事务ID（事务ID不为0），跳转至全链路页面，展示该事务的执行链路耗时信息。
   
   
   图1SQL全链路信息   
   ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649933046.png "点击放大")
   
   表1SQL全链路部分参数说明 
   | **模块**              | **参数名称**   | **参数解释**                                            |
   |:---|:---|:---|
   | 资源耗时信息              | CPU耗时      | CPU上花费的时间。                                          |
   | 资源耗时信息              | IO耗时       | IO上花费的时间。                                           |
   | 资源耗时信息              | 其余耗时       | 有效的DB时间减去CPU耗时、IO耗时。                                |
   | 内核执行模块耗时信息          | SQL解析耗时    | 解析SQL语句花费的时间。                                       |
   | 内核执行模块耗时信息          | SQL重写耗时    | 重写SQL语句花费的时间。                                       |
   | 内核执行模块耗时信息          | SQL生成计划耗时  | 生成SQL执行计划花费的时间。                                     |
   | 内核执行模块耗时信息          | 执行器内执行耗时   | 执行SQL语句花费的时间。                                       |
   | 内核执行模块耗时信息          | 其余耗时       | 执行SQL语句花费总时间减去SQL解析耗时、SQL重写耗时、SQL生成计划耗时和执行器内执行耗时之和。 |
   | 等待事件代码耗时信息          | 耗时TOP5事件列表 | 耗时最多的事件耗时信息列表。                                      |
   | 等待事件代码耗时信息          | 其余事件耗时     | 所有事件耗时减去TOP5事件耗时。                                   |
   | 等待事件代码耗时信息          | 其余耗时       | 有效的DB时间减去所有等待事件代码耗时。                                |
   | 资源类等待事件耗时-IO耗时信息    | 耗时TOP5事件列表 | 耗时最多的IO事件列表。                                        |
   | 资源类等待事件耗时-IO耗时信息    | 其余事件耗时     | 所有IO事件耗时减去TOP5 IO事件耗时。                              |
   | 资源类等待事件耗时-IO耗时信息    | 其余耗时       | 有效的DB时间减去所有IO等待事件耗时。                                |
   | 资源类等待事件耗时-加锁耗时信息    | 耗时TOP5事件列表 | 耗时最多的加锁事件列表。                                        |
   | 资源类等待事件耗时-加锁耗时信息    | 其余事件耗时     | 所有加锁事件耗时减去TOP5 加锁事件耗时。                              |
   | 资源类等待事件耗时-加锁耗时信息    | 其余耗时       | 有效的DB时间减去所有加锁事件耗时。                                  |
   | 资源类等待事件耗时-轻量级加锁耗时信息 | 耗时TOP5事件列表 | 耗时最多的轻量级加锁事件列表。                                     |
   | 资源类等待事件耗时-轻量级加锁耗时信息 | 其余事件耗时     | 所有轻量级加锁事件耗时减去TOP5 轻量级加锁事件耗时。                        |
   | 资源类等待事件耗时-轻量级加锁耗时信息 | 其余耗时       | 有效的DB时间减去所有轻量级加锁事件耗时。                               |
      
   具体等待事件参数的含义请参考"开发指南 \>系统表和视图 \> 系统视图 \>其他系统视图 \> PG_THREAD_WAIT_STATUS"章节中关于"wait_status"和"wait_event"的描述。
   
   
6. 鼠标悬浮到具体节点，显示SQL在该节点上执行的详细信息。 
   图2SQL执行信息   
   ![](https://support.huaweicloud.com/usermanual-gaussdb/figure/zh-cn_image_0000002649933048.png "点击放大")
   
   DB Time：耗费的DB时间总和，多线程将累加（单位：微秒）。DB Time和开始时间/结束时间统计是两套机制，不完全符合；但差异非常小，不影响性能问题分析。
   
   
 
