目 录
- KSH活动会话历史信息介绍
Kingbase性能调整最重要的就是对最影响性能的SQL的调整。在一个应用中,能够影响到数据库的只有SQL,也只能是SQL。系统不能只依靠增强硬件、修改系统、数据库参数来提高数据库的性能,更多的应该关注那些最影响性能的SQL语句。KSH报告、KWR报告和KbBadger报告都是能够找出影响性能SQL的工具。在分析KSH报告、KWR报告和KbBadger报告的时候,最重要的工作就是找出对性能影响最大的SQL语句,并对其进行优化。
sys_stat_activity里记录的等待事件是瞬时信息,没有对等待事件的时间进行累计,KSH通过每秒钟抽取所有活动会话样本,分析最近时刻的性能问题。每秒钟收集所有活动会话的等待信息,不活动的会话不会采样, 并将采集数据放入内存的Ringbuf队列中,采集的数据主要包括:会话、应用、等待事件、命令类型、QueryId等。其主要使用场景是:当前或历史某个时点,发生了什么样的异常,系统在执行/运行什么任务。
- 部署KSH报告功能
修改kingbase.conf参数文件 shared_preload_libraries ='sys_stat_statements, sys_ksh' sys_stat_statements.max = 10000 sys_stat_statements.track =all sys_ksh.enable = on sys_ksh.ringbuf_size = 200000 sys_ksh.history_days = 3 track_activities = on 采集报告需要在开启:track_activities,并至少设定sys_ksh.enable=on的情况下才可以查 看。开启该参数会有一定的性能损耗。 |
重启数据库使配置生效 sys_ctl -D /home/kingbase/KingbaseES/V8 restart |
-
- 创建KSH扩展
ksql test system连接数据库 create extension sys_ksh; |
- 使用KSH报告功能
-
- ksh采集数据说明
KSH采集的数据主要包括以下信息:
字段 | 类型 | 描述 |
ts | timestamptz | 采样时间 |
db_id | oid | 数据库OID |
db_name | varchar(64) | 数据库名称 |
pid | int | 进程ID |
user_id | oid | 用户OID |
user_name | varchar(64) | 用户名 |
app_name | varchar(64) | 应用名称 |
client_addr | inet | 客户端IP地址 |
wait_class | text | 等待事件类型 |
wait_event | text | 等待事件 |
query_id | uint8 | QueryId |
backend_type | text | 后端类型,如:autovacuum, autovacuum worker等 |
type | text | 语句类型,如:INSERT, SELECT, UPDATE, DELETE, UT ILITY |
phase | text | 执行阶段,如:PARSE, PLAN, EXECUTION, UNKNOWN |
state | text | 状态,如:IDLE, IDLE IN TRANSACTION, RUNNING等 |
-
- 使用ksh
保存于内存Ringbuf的数据可以通过视图perf.session_history查看: select * from perf.session_history; |
保存于数据库的历史数据可以通过视图perf.ksh_history查看: select * from perf.ksh_history; |
-
-
- ksh生成报告
-
select perf.ksh_report(start_ts, duration, slot_width, write_to_file); 参数说明:
|
- 查看ksh报告
-
- 生成ksh报告
不指定时间: select sys_sleep(1); select * from perf.ksh_report(); |
指定ksh_report报告时间戳参数: select * from now(); select * from perf.ksh_report('2022-02-27 17:00:50.690837+08',10,0,false); |
-
- 分析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秒