opengauss数据库使用系统表statement_history记录当前节点的SQL执行信息,用于替代日志方式记录Slow SQL。用于性能问题定位、SQL性能问题分析。会根据配置,记录两类SQL:
1、全量SQL记录
2、慢SQL
对于此系统表查询有如下约束:
1、必须在postgres库内查询,其它库中不存数据。
2、此系统表受track_stmt_stat_level控制,默认为"OFF,L0",第一部分控制Full SQL,第二部分控制Slow SQL。
3、对于Slow SQL,当track_stmt_stat_level的值为非OFF时,且SQL执行时间超过log_min_duration_statement,会记录为慢SQL。
4、查询系统表必须具有sysadmin权限。
相关参数
1、log_min_duration_statement
参数说明:设置记录慢SQL的阀值。默认值1800000ms
-1 is disabled, 0 logs all statements and their durations, > 0 logs only statements running at least this number of milliseconds
2、track_stmt_details_size
参数说明:设置单语句可以收集的最大的执行事件的大小(byte)。
该参数属于USERSET类型参数,请参考重设参数中对应设置方法进行设置。
取值范围:整型,0 ~ 576460752303423487
默认值:4096
3、track_stmt_retention_time
参数说明:组合参数,控制全量/慢SQL记录的保留时间。以60秒为周期读取该参数,并执行清理超过保留时间的记录,仅sysadmin用户可以访问。
该参数属于SIGHUP类型参数,请参考重设参数中对应设置方法进行设置。
取值范围:字符型
该参数分为两部分,形式为’full sql retention time, slow sql retention time’:
full sql retention time为全量SQL保留时间,取值范围为0 ~ 86400。
slow sql retention time为慢SQL的保留时间,取值范围为0 ~ 604800。
默认值:3600,604800
4、track_stmt_stat_level
参数说明:控制语句执行跟踪的级别。
该参数属于USERSET类型参数,请参考重设参数中对应设置方法进行设置,不区分英文字母大小写,如果打开full sql功能会影响性能,并可能会占用大量的磁盘空间。
取值范围:字符型
该参数分为两部分,形式为’full sql stat level, slow sql stat level’:
第一部分为全量SQL跟踪级别,取值范围为OFF、L0、L1、L2。
第二部分为慢SQL的跟踪级别,取值范围为OFF、L0、L1、L2。
说明:
若全量SQL跟踪级别值为非OFF时,当前SQL跟踪级别值为全量SQL和慢SQL的较高级别(L2 > L1 >L0)。
默认值:OFF,L0
5、track_stmt_parameter
Enable to track the parameter of statements,默认值OFF,建议设置为on。
相关函数及查询语句示例
1、statement_detail_decode(detail text, format text, pretty boolean)
描述:解析全量/慢SQL语句中的details字段的信息。
返回值类型:text
参数
detail: SQL语句产生的事件的集合(不可读)。
format: 解析输出格式,取值为plaintext。
pretty: 当format为plaintext时,是否以优雅的格式展示:
true表示通过“\n”分隔事件。
false表示通过“,”分隔事件。
查看SQL执行过程中锁申请、释放信息的sql示例:
select unique_query_id,statement_detail_decode(details,'plaintext',true) from statement_history where details is not null;
2、查看慢sql记录sql语句示例:
select is_slow_sql,count(*),min(start_time),min(finish_time),max(now()) now from statement_history group by is_slow_sql;
\dS+ statement_history




