一、什么是KSH
KSH是KingbaseES会话历史信息(Kingbase Session History)的简称(类比Oracle ASH),主要功能是会话历史的分析,并针对报告呈现的性能瓶颈进行优化。
二、KSH基本原理
以每秒采样的方式进行会话和数据收集,并将采集数据放入内存的 Ringbuf 队列中,采集的数据主要包括:会话、应用、等待事件、命令类型、QueryId等。其主要使用场景是:当前或历史某个时点,发生了什么样的异常,系统在执行/运行什么任务。
三、KSH配置使用方式
1.配置参数
开启KSH,需要在kingbase.conf中配置开启以下参数:
重启数据库生效 sys_ctl -D /home/kingbase/KingbaseES/V8 restart
2.添加KSH插件
使用SQL在目标数据库中创建SYS_KSH扩展:CREATE EXTENSION sys_ksh;
3.生成KSH报告
语法:
SELECT perf.ksh_report({start_ts}, {duration}, {slot_width}, {write_to_file});
- start_ts: 报告开始时间,默认:当前时间-15分钟
- duration: 报告时长,默认到15分钟,最大不超过60
- slot_width: 报告最小区间,输入0时系统自动计算合适的宽度
- write_to_file: 是否输出到sys_log目录,默认否
四、KSH报告分析
KSH输出报告的内容包括:
- Report & Instance Info: 报告和实例信息
- Top User Event: TOP用户事件
- Top Background Event: TOP后端事件
- Top SQL with Top Event: TOP语句的TOP事件
- Complete List Of SQL Text: TOP完整语句
- Top Session: TOP会话
- Top Client Id: TOP客户端
- Top SQL Command Type: TOP语句命令类型
- Top Phase Of Execution: TOP运行阶段
- Activity Over Time: 区间活动统计
通过该输出,可以发现报告区间发生的最多的等待事件、查询和客户端的信息
注意:
- 该命令仅支持管理员在主服务器运行(备机无法运行)
- 历史数据的采样周期为10秒,实时数据的采样周期为1秒