更新时间:2026-07-28 GMT+08:00
分享

技术原理

核心机制

当前支持语句执行前生成unique_query_id,并在DBE_PERF.STATEMENT插入一条记录,供后续归一、上报刷新使用;语句执行期间,在DBE_PERF.STATEMENT中刷新相应语句的产生的指标;语句执行完,执行记录会判断是否是慢SQL,结合track_stat_stmt_level的值,决定是否需要记录到DBE_PERF.STATEMENT_HISTORY。

存储过程场景是在存储内部语句执行前,将存储过程调用语句的unique_sql_id保存,作为存储过程内语句的parent_unique_sql_id,通过parent_unique_sql_id和unique_sql_id的值,维护语句间的调用关系。存储过程内语句执行时,在DBE_PERF.STATEMENT插入记录,每条语句执行完,结合该语句是否执行慢,以及参数track_stmt_stat_level的值确认是否需要记录到DBE_PERF.STATEMENT_HISTORY中。和非存储过程语句的区别在于,DBE_PERF.STATEMENT表中记录的指标是在整个存储过程执行完成后才会统一刷新。

性能指标

instr_unique_sql_track_type设置成all,存储过程执行耗时相比于设置成top时,劣化5%左右。

接口介绍

存储过程慢SQL支持的接口

函数

DBE_PERF.GET_FULL_SQL_BY_PARENT_ID_AND_TIMESTAMP 根据指定parent_unique_sql_id递归查询执行时间段内DBE_PERF.STATEMENT_HISTORY中,该语句及所有子语句的执行记录。

系统表

DBE_PERF.STATEMENT_HISTORY字段parent_unique_sql_id,表示调用该语句的存储过程的unique_query_id,最顶层语句该值为0。

系统视图

DBE_PERF.STATEMENT字段parent_unique_sql_id,表示调用该语句的存储过程的unique_query_id,最顶层语句该值为0。

GUC参数

instr_unique_sql_track_type参数all选项控制开启存储过程慢SQL特性功能。

相关文档