金仓数据库KingbaseES 慢查询日志的获取(二)
关键字:
KingbaseES、慢查询日志、log、sys_stat_statements、人大金仓、KingbaseES
一、慢查询日志概述
慢查询日志可以记录所有执行时间超过一定阈值(1s)的SQL语句。通过分析慢查询日志可以找出哪些查询比较耗时,然后在进行优化。获取慢查询日志的方法有两种:
- 开启慢查询日志。
- 使用sys_stat_statements扩展。
下面详细介绍通过sys_stat_statements扩展获取慢查询日志的方法。
二、sys_stat_statements
插件 sys_stat_statements 是 KingbaseES 的一个扩展插件。该插件提供了一种获取服务器执行的所有SQL语句统计信息的方法,可以用于统计数据库的资源开销,如分析TOP SQL。
1、sys_stat_statements加载方式
修改 kingbase.conf 文件中 shared_preload_libraries 参数后重启数据库。
shared_preload_libraries = 'sys_stat_statements'
2、sys_stat_statements参数配置
该插件的主要配置参数
- sys_stat_statements.max(整数):模块跟踪的最大语句数(即sys_stat_statements视图中的最大行数)。如果观察到的语句不同,则将丢弃关于执行最少的语句的信息。默认值为5000。只能在服务器启动时设置此参数。
- sys_stat_statements.track(枚举):控制模块计算哪些语句。指定top以跟踪顶级语句(由客户端直接发出的语句),默认值为top。仅超级用户可以更改此设置。
- sys_stat_statements.track_utility(boolean):控制模块是否跟踪实用程序命令。实用程序命令是除 SELECT,INSERT,UPDATE 和 DELETE之外的所有命令。默认值为 on。仅超级用户可以更改此设置。
- sys_stat_statements.save(boolean):指定是否在服务器关闭时保存语句统计信息。如果关闭,则统计信息不会在关闭时保存,也不会在服务器启动时重新加载。默认值为on。只能在kingbase.conf文件或服务器命令行中设置此参数。
3、sys_stat_statements视图
KingbaseES 加载 sys_stat_statements 插件后,通过视图 sys_stat_statements 查看。视图 sys_stat_statements内容默认为空,需要在kingbase.conf中配置参数才可以将sql日志写入sys_stat_statements视图。典型的参数配置为:
shared_preload_libraries ='sys_stat_statements'
sys_stat_statements.max = 10000
sys_stat_statements.track = 'top'
配置完上述参数后,需要重新启动数据库,参数才能生效。
三、举例说明
(1)在kingbase.conf中,配置以下参数:
shared_preload_libraries ='sys_stat_statements'
sys_stat_statements.max = 10000
sys_stat_statements.track = 'top'
重新启动,使上述参数设置生效。
(2)在Kingbase数据库中输入以下命令:
test=#select query, calls, total_parse_time, rows, 100*shared_blks_hit/nullif(shared_blks_hit+shared_blks_read,0) as hit_precent from sys_stat_statements limit 2;
(3)通过以上命令获取的慢查询日志结果为: