暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

opengauss数据库慢sql分析

心有星汉 2025-12-22
407

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论