KingbaseES参数track_activity_query_size介绍

背景

同事A在客户现场,最近注意到客户的主数据库性能有所下降,尤其是在高峰时段。怀疑可能有一些复杂的查询影响了数据库的性能,但尚未确定具体是哪些查询。

为了诊断问题,A决定查看高峰期正在执行的查询,先通过sys_stat_activity视图看下当前有哪些sql在运行:

SELECT pid, usename, query, state FROM sys_stat_activity WHERE state = 'active';

结果显示了多个活动查询,A注意到有部分query字段记录的sql被截断了,从而无法获取完整的sql。

这是因为track_activity_query_size参数设置得太小,导致无法查看完整的查询字符串。默认情况下,这个参数的值可能不足以显示复杂查询的sql。

在跟客户申请后,在夜间修改了参数并重启数据库后,次日重新查询,已能获取到完整的sql语句。

后续对复杂的报表查询语句进行了优化,解决了问题。

参数说明

track_activity_query_size:指定跟踪每个活动会话当前执行命令所保留的字节数,它们被用于sys_stat_activity.query域。默认值是 1024。这个参数只能在服务器启动时被设置。

换句话说,track_activity_query_size设置的是sys_stat_activity.query字段可以保存的查询字符串的最大字符数。如果一个查询的长度超过了这个参数设置的大小,那么在sys_stat_activity.query 中显示的查询字符串会被截断。

注意

增加track_activity_query_size可能会增加每个会话的内存使用量。因此,在内存受限的环境中调整此参数时需要谨慎。

建议在调整此参数后监控数据库的内存使用情况,确保不会导致过度的内存压力。

track_activity_query_size 是KingbaseES中一个重要但经常被忽视的配置选项。

通过正确配置和使用此参数,您可以获得关于数据库活动的宝贵信息,这对于维护数据库的健康和优化性能至关重要。