关键字:
KingbaseES、SYS_KWR、自动负载信息库
1.什么是SYS_KWR?
SYS_KWR是KingbaseES自动负载信息库的简称(Kingbase Auto Workload Repertories),英文注释为KingbaseES auto workload repository and report builder,即通过周期性自动记录性能统计相关的快照,分析出KingbaseES的操作系统运行环境、数据库时间组成、等待事件和TOP SQL等性能指标,为数据库性能调优提供指导。
2.KWR对应的插件
KWR以插件的形式存在,依赖内置的sys_stat_statements插件。 如果开启了KWR自动快照功能,会自动在Kingbase库上创建SYS_KWR插件。 在目标库上创建的SQL语句是:CREATE EXTENSION sys_kwr;
3.KWR的基本原理
数据库实例运行过程中不断产生一些统计数据(某表访问次数、数据页的内存命中次数、某个等待事件发生的次数和总时间、SQL语句解析时间等) 这些统计数据被一个叫KWR collector的后台性能监控进程周期性地(默认每小时)自动采集,存储到KWR快照库中,这些快照默认保存8天,到期后旧快照被自动删除。 当出现性能问题的时候,可以通过指定时间段来查询相关快照列表,生成KWR报告,定位性能问题的根本原因。 其他性能组件比如 KDDM,基于 KWR 快照提供自动建议。
4.如何生成报告
配置文件 kingbase.conf中开启统计开关,其中 shared_preload_libraries(共享预加载库,PostgresSQL中的参数配置,用于指定在数据库服务器启动过程中应加载到内存的共享库列表)根据实际需要设置即可。 设置完,重启服务器,通过ksql连接,创建KWR插件,创建快照,执行sql后再次创建快照,就可以生成KWR报告了。 推荐使用HTML格式,可以将文件保存到指定路径。
5.KWR的使用价值
KWR通过自动采集操作系统和数据库实例的性能数据,将其存储为KWR快照,并依此来生成KWR报告为DBA性能调优提供参考,其价值包括:
- 自动采集操作系统统计信息,不需要额外的性能监控工具
- 感知数据库运行环境,排查数据库实例外部原因造成的性能问题
- 通过统一的DB Time模型,度量数据库关键活动耗时
- 通过query ID将SQL执行时间、等待时间和资源消耗关联起来,进行语句级分析
- 从多个维度(时间、IO、内存、锁、实例、库对象等)分析数据库实例的性能问题
- 自动生成快照,便于回溯之前发生的性能问题
- 为KDDM等自动诊断和建议提供基础数据 更多信息,参见https://help.kingbase.com.cn/v8/index.html