全链路跟踪

可获得性

本特性自openGauss 7.0.0-RC2 版本开始引入。

特性简介

全链路跟踪能够追踪用户 SQL 请求在数据库全链路过程中,在不同阶段执行的相关信息,并以树状结构展现给用户,帮助开发者回溯执行时间超过阈值的SQL,诊断SQL性能瓶颈。

客户价值

全链路跟踪提供诊断慢SQL所需要的必要信息,用户无需通过复现就能离线诊断特定慢SQL的性能问题,助力用户快速精准地发现组件内部问题,函数接口方便用户统计慢SQL指标。对接第三方平台。

特性描述

在主机中,全链路跟踪提供函数查询接口。复用系统表(statement_history),增加trace全链路信息,用户从接口中能查询到作业的执行计划,在不同阶段执行的相关信息,结合其他已有慢SQL指标字段便捷地找到性能瓶颈点,进而进行分析和优化。

在备机中,复用原慢SQL备机记录方式,增加trace全链路信息,即备机无法往表(statement_history)中写入性能诊断数据,因此备机使用了新的方式来记录数据,并通过函数接口查询,用户在接口中查询到的各类信息,与主机的表(statement_history)完全一致。

特性增强

增加对SQL在不同阶段执行的相关信息增强。


主机:查看当前节点SQL语句执行trace信息
gsql> select statement_trace_decode(trace) from statement_history;;
例如:
openGauss=# select statement_trace_decode(trace) from statement_history;
                                                     statement_trace_decode
--------------------------------------------------------------------------------------------------------------------------------
 ├─Select query                                     7424 (us)    2025-07-19 14:52:01.863055+08   2025-07-19 14:52:01.870479+08 +
     ├─ExecutorRun                                  7188 (us)    2025-07-19 14:52:01.863272+08   2025-07-19 14:52:01.87046+08  +
         ├─FunctionScan                             7169 (us)    2025-07-19 14:52:01.863282+08   2025-07-19 14:52:01.870451+08 +

                     
备机:查看当前节点SQL语句执行trace信息
gsql> select statement_trace_decode(trace) from dbe_perf.standby_statement_history(true);
例如:
openGauss=# select statement_trace_decode(trace) from dbe_perf.standby_statement_history(true);
                                                    statement_trace_decode
-------------------------------------------------------------------------------------------------------------------------------
 ├─Select query                                   100796 (us)    2025-07-19 15:02:10.007698+08   2025-07-19 15:02:10.108494+08+
     ├─ExecutorRun                                100574 (us)    2025-07-19 15:02:10.007874+08   2025-07-19 15:02:10.108448+08+
         ├─FunctionScan                           100500 (us)    2025-07-19 15:02:10.007883+08   2025-07-19 15:02:10.108383+08+

特性约束

  • 目前的SQL跟踪信息,基于正常的执行逻辑。执行失败的SQL,其跟踪信息不具有准确的参考价值。
  • 系统表(statement_history)为unlogged表,节点或进程重启,会导致该节点的数据丢失。
  • 通过GUC参数设置收集SQL语句的数量,如果超过阈值,新的SQL语句执行信息不会被收集。
  • 通过GUC参数设置单条SQL语句收集的全链路详细信息的最大字节数,如果超过阈值,新的全链路详细信息不会被收集;如果阈值过小(存放不了一个span),全链路详细信息不会被收集。
  • 通过异步刷新方式刷新用户执行中的SQL信息,所以用户Query执行结束后,存在查询相关视图函数结果短暂时延。
  • statement_history表相关函数以及视图、备机dbe_perf.standby_statement_history中的trace字段为二进制格式,使用对应函数pg_catalog.statement_trace_decode(trace)。
  • statement_history表查询需要切换至postgres库,其他库中数据为空。
  • 备机dbe_perf.standby_statement_history函数查询需要切换至postgres库,其他库中查询会提示不可用。
  • statement_history表以及备机dbe_perf.standby_statement_history函数的内容受track_stmt_stat_level控制,默认为'OFF,L0',参数第一部分代表Full SQL,第二部分是慢SQL;对于全链路信息,只有Full SQL大于等于L1级别或慢SQL大于等于才L1级别才会被记录。

依赖关系

无。

意见反馈
编组 3备份
    openGauss 2025-07-24 22:42:58
    取消