关键字:
KWR;人大金仓;KingbaseES
概述
KWR (Kingbase Workload Repertories) 的中文全称是自动负载数据库,是一种性能收集和分析工具,提供了一个时间段内整个系统的报表数据,里面包含了常见的等待时间分析。通过参数设置可以定期生成指定格式的KWR性能报告,可以清理指定日期以外的快照。KWR每小时采集一次KingbaseES的统计数据,快找数据默认保留8天。快照数据主要来源是:
- 累积式等待事件 (sys_stat_waitaccum视图)
- Top SQL (sys_stat_waitaccum视图)
- Schema对象统计信息(sys_stat_*,sys_statio_*视图)
配置文件
-
-
- 参数设置
-
vi data/kingbase.conf
shared_preload_libraries='sys_kwr,sys_stat_statements'
track_sql=on
track_instance=on
track_wait_timing=on
track_io_timing=on
track_functions='all'
track_activities=on
sys_stat_statements.track='top'
sys_kwr.enable=on # 自动快照会在数据库上创建 sys_kwr 插件
参数解释:
track_sql:开启统计 SQL 时间、 SQL 等待事件、SQL IO,默认为 off,建议 on
track_instance:开启统计实例级 IO、锁、关键活动,默认为 off,建议 on
track_activities:开启记录等待事件,默认为 on
track_wait_timing:开启累积式等待事件记录等待时间的功能,默认为 off
track_io_timing:开启 IO 计时统计功能,默认为 off
track_functions:开启函数统计功能,默认为 none,建议为 all
sys_stat_statements.track:跟踪统计 SQL 语句的访问,默认为 none,建议为 top
sys_kwr.enable:开启自动快照,默认为 off
其他参数一般使用默认值即可:
sys_kwr.topn:kwr 报告显示 top n 条件记录,默认 20 条,最少为 10,最多为 100
sys_kwr.history_days:快照保留时间,默认为 8 天,最少为 1,最多为 1000
sys_kwr.interval:自动快照隔离间隔,默认为 60 分钟,最短 10,最长 144000 分钟(100 天)
sys_stat_statements.track_parse:sys_stat_statements.track 记录 parse 次数和时间,默认开启
sys_stat_statements.track_plan:sys_stat_statements.track 记录 plan 次数和时间,默认开启
-
-
- 参数生效
-
重启数据库,使配置文件生效:
sys_ctl –D /home/kingbase/KingbaseES/V8/data restart
KWR 快照
-
-
- 创建扩展
-
ksql test system 连接数据库
create extension sys_kwr;
-
-
- 创建快照
-
- 手工创建
select * from perf.create_snapshot();
- 自动创建(后台进程周期性地生成快照,需要配置 kingbase.conf 参数)
sys_kwr.interval = 10 # 自动每10分钟采集一次
-
-
- 快照查找
-
select * from perf.kwr_snapshots;
-
-
- 清理快照
-
select perf.reset_snapshots; # 所有
select perf.drop_snapshots(&begin_snap_id,&end_snap_id); # 指定范围内
KWR 报告
-
-
- text 格式
-
- 函数 perf.kwr_report(start_id,end_id)
#默认保存在 data/sys_log 目录下,生成 html 格式需要加上函数参数 'html'
select * from perf.kwr_report(start_id,end_id);
- 函数 perf.kwr_generate_report(start_id,end_id,format)
format:报告格式,支持 ' text ' 和 ' html ',建议使用 ‘ html ’
./ksql -Usystem -dtest -c "select * from perf.kwr_generate_report(start_id,end_id,'text')" > /home/kingbase/kwr_report/kwr_report_02\_24_10_10.text
- 函数 perf.kwr_report_to_file(start_id,end_id,format,path)
select * from perf.kwr_report_to_file(start_id,end_id,'text',/home/kingbase/kwr_report/kwr_report_02_24_10_10.text);
-
-
- html 格式
-
- 函数 perf.kwr_report(start_id,end_id,format)
- 函数 perf.kwr_generate_report(start_id,end_id,format)
- 函数 perf.kwr_report_to_file(start_id,end_id,format,path)
参考资料
《金仓数据库KWR使用说明》