一、什么是KWR
KWR是KingbaseES自动负载信息库(Kingbase Auto Workload Repertories)的简称(类比Oracle AWR),他通过周期性自动记录性能统计相关的快照,分析出KingbaseES的操作系统运行环境,数据库时间组成,等待事件和TOP SQL等性能指标,为数据库性能调优提供指导。
二、KWR基本原理
数据库实例运行过程中不断产生一些统计数据,比如对某个表的访问次数,数据页的命中次数,某个等待事件发生的次数和总时间,SQL语句的解析时间等,这些统计数据被一个叫做KWR collector的后台性能监控进程周期性地(默认每小时)自动采集,存储到KWR快照里面,这些快照默认保存8天,到期后那些快照被自动删除。
三、KWR配置使用方式
- 配置参数
KWR依赖内核统计模块采集性能统计数据,需要在kingbase.conf中配置开启以下参数:
注意:打开自动快照功能,需要将sys_kwr.enable设置为on(需重启数据库)
- 添加KWR插件
使用SQL在目标数据库中创建SYS_KWR扩展:CREATE EXTENSION sys_kwr;
- 快照管理
3.1手动快照管理
SELECT * FROM perf.create_snapshot(); ---手动创建快照
SELECT * FROM perf.kwr_snapshots; ---查询快照列表
SELECT * FROM perf.drop_snapshots(1, 2); ---手动删除指定范围快照
SELECT * FROM perf.reset_snapshots(); ---手动清空所有快照
3.2自动快照管理
自动快照由后台进程周期性生成快照,需修改kingbase.conf如下参数:
- 生成KWR报告
将9:52至9:55时间范围的快照1、2形成报告,支持txt和html两种文件格式
---生成txt格式报告
SELECT * FROM perf.kwr_report_to_file(1,2,'text', '/home/kingbase/kwr_1_2.txt');
---生成html格式报告
SELECT * FROM perf.kwr_report_to_file(1,2,'html', '/home/kingbase/kwr_1_2.html');
四、KWR报告分析
主要从报告摘要部分进行分析,摘要部分从总体角度描述数据库性能,分析完摘要部分就能大体了解性能情况,甚至可以定位性能问题所在,也可以结合报告主体详细内容分析问题。
- 负载分析
描述数据库负载情况,其中比较重要的性能指标参数有:DB Time, DB CPU, Foreground Wait Time, WAL Size, Blocks Read/Write Size等。如下图WAL size写入量很小,Blocks 读写较小,证明数据库没有什么压力。
- 实例效率百分比
实例效率百分比展示数据库实例跟重复利用数据缓存也、解析、计划的效率百分比情况,这些值在优化的比较好的测试环境里几乎都接近100%。
- TOP 10前台等待事件
显示花费等待时间最多的10个前台等待事件,从该报告可以看出数据库实例在主要在等待什么。
- 主机CPU
显示快照期间主机CPU的使用情况,可以了解数据库实例的运行环境。当主机上没有其他进程消耗较大CPU的时候,该值可以近似地认为是数据库实例的CPU使用情况。
- 主机IO
显示主机上各磁盘IO读写统计数据,可以反映数据库实例所在环境的IO繁忙程度。
- 主机内存
显示了主机内存在快照开始和结束时使用情况,只有内存明显不够的情况下才需要关注,比如使用到了Swap交换空间。
- 主机网络
显示了主机上每个网络介质上网络IO的情况,如果网络负载高可以关注。