人大金仓数据库KingbaseES KWR插件原理

关键字:

KWR、人大金仓、KingbaseES

KWR 是KingbaseES提供的用于检测性能的工具

  1. KWR原理概述
  2. KWR插件会创建一系列KWR表,这些KWR表存储了KWR快照采集到的所有信息,以下就是KWR表之间的关系图
  3. 在一系列的KWR表中,kwr_snotshots会记录快照id,其它所有表都会将自己的快照id列作为外键引用kwr_snapshots表的快照id。
  4. 生成kwr快照的方式就是从共享内存中收集本次的统计信息,用本次的统计信息与上一次记录的统计信息做差,得到的差值就是本次的KWR快照。
  5. 这个过程主要涉及到两种类型的表,一种表就是普通的kwr_snapshots表另一种表则是kwr_last_snapshos表,其中kwr_last_snapshots表具有特殊要求,它只会存储当前时刻上一次的快照的结果,也就是说该表在常规状态下仅存在一条记录。
  6. 但是在生成快照时会以kwr_last_snapshots表作为跳板,将本次收集到的统计信息以及生成的快照id一同存入kwr_last_snapshots表中,也就是说现在kwr_last_snapshot表会存在两条记录,其中一条是上一次的kwr快照,而另一条则是收集到的统计信息以及新的kwr快照id组成的元组,下一步会使用新收集到的kwr统计信息与该表原本存储的上一条记录做差,将得到的差值存入到kwr_snapshots表中作为新的kwr快照,最后要从kwr_last_snapshots表中删除上一时刻的快照信息,继续保证kwr_last_snapshots表仍仅存在一条数据,值得注意的是在获取上一条快记录时会对该条记录上锁,也就是说仅允许一个进程获取上一条快照记录,同时鉴于last表中仅存在一条记录,因此可以认为在同一时刻仅允许一个进程造快照,多个多进程同时造快照时只能成功一个其它的进程都必须失败。
  7. 因此总结提炼一下KWR快照的生成流程就是:
  8. KWR 生成快照流程

  9. 以上是生成快照的常规做法,但是通过观察kwr的表关系图,不难发现snap_stat_statement不存在last表,这是因为该表的统计信息来自于pg_stat_statment视图,而每次造快照时都会调用reset函数清这个视图的全部数据,因此可以认为每次读到的统计信息就是差值,所以该表不存在last表,这是唯一的一例特殊情况。
  10. kwr生成快照的方式已经讲完了,接下里就是出kwr报告的方式,当集群中存在复数个kwr快照时,就可以调用report接口返回kwr报告了,报告可以选择txt以及html格式的报告,出kwr报告的report函数它接受两个变量一个是开始快照的快照id另一个是结束快照的快照id,出报告的方式很简单,kwr插件会遍历开始快照和结束快照之间的所有快照,并把每一个快照的值拿出来累加处理,累加的最终结果将作为kwr报告呈现给用户。
  11. kwr插件它还支持自动创建kwr快照的功能,具体流程就是存在一个KWR Collector进程,该进程进程会判断是否创建了kwr插件,如果没创建就用SPI接口造一个,否则就定时执行SPI接口创建kwr快照。
  12. kwr创建快照流程

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值