kingbase V9中ksh金仓活动会话历史的使用

本文详解Kingbase V9中KSH(Kingbase Session History)活动会话历史的启用与使用方法,涵盖插件加载(sys_kwr)、核心参数配置(如collect_ksh、sampling_interval、ringbuf_size)、统计开关设置、KWR集成机制,以及KSH报告生成(ksh_report、ksh_report_to_file)和常用查询视图(perf.session_history、perf.ksh_history)。内容聚焦数据库性能诊断能力构建,对标Oracle ASH,适用于DBA进行实时/历史会话级性能分析。

1.登录kingbase 数据库去执行
  ksql -d kingbase -U system

2.必须要插件sys_kwr加载
  v9 已经把ksh合并到kwr插件里面了,没有单独的ksh插件

  shared_preload_libraries = 'sys_stat_statements, sys_kwr'

3.开启基础统计
track_activities = on
track_io_timing = on
track_instance = on
sys_stat_statements.track = top
sys_stat_statements.max = 10000


4.配置KWR基础
sys_kwr.enable = on

5.KSH核心开关
sys_kwr.collect_ksh = on                  # 开启KSH采样,默认off
sys_kwr.ringbuf_size = 100000             # 内存环形缓冲区条数,默认10w
sys_kwr.ksh_sampling_interval = 1000      # 采样间隔,单位ms,默认1000=1秒一次
sys_kwr.ksh_disk_filter_ratio = 10        # 落盘比例,10代表10条采样落1条;填1=全部落盘(开销大)
sys_kwr.history_days = 8                  # KSH历史数据保留天数

SELECT pg_reload_conf();


6. 生成 KSH 报告(适配 2.1.o2,public)

-- 最近 15 分钟、自动槽宽,直接看结果
SELECT perf.ksh_report();

-- 指定时间窗口,输出 HTML 文件
SELECT perf.ksh_report_to_file(
         now() - interval '30 minutes', 30, 0,
         '/home/kingbase/ksh_report.html', 'html');

 



-- 按 KWR 快照号区间生成

perf.ksh_report_by_snapshots(start_snapid, end_snapid, slot_width, format)

参数约定:

- start_ts:默认当前时间 − 15 分钟;
- duration:默认 15 分钟,最大 60 分钟;
- slot_width:为 0 时自动计算;
- format:支持 'html' 与 'text';
- database:不指定则生成全部数据库的报告;
- file_path:输出文件全路径,目标目录须提前存在且对数据库用户可写。

SELECT perf.ksh_report_by_snapshots(1, 2, 0, 'html');

--无负载时如何验证 KSH 能采到数据
KSH 采样的是活跃会话,空闲实例自然采不到内容。可人为制造一个等待事件再取报告:

SELECT sys_sleep(2);
SELECT perf.ksh_report();



7. 常用查询(抓瞬时卡顿,对标 ASH)

perf.session_history        视图        查看内存中的近期采样数据
perf.ksh_history        视图        查看已落盘的历史采样数据,23 个字段,含 ts、pid、user_name、app_name、db_name、state、event_type、event、cmd_type、phase、query_id、snap_id 等
perf.ksh_history_data        表        KSH 采样统计表,基于 sys_stat_activity
perf.ksh_statements        表        存储 SQL 语句文本,用于把 query_id 还原成 SQL


-- 最近10分钟活跃会话采样,TOP等待
SELECT ts,event_type,event,query_id,state,backend_type
FROM perf.session_history
WHERE ts >= now() - interval '10 minutes'
ORDER BY ts DESC;


按等待事件聚合,先看“卡在什么上”:

kingbase=# SELECT event_type, event, count(*) AS samples
kingbase-# FROM perf.ksh_history
kingbase-# WHERE ts >= current_timestamp - interval '30 minutes'
kingbase-# GROUP BY event_type, event
kingbase-# ORDER BY samples DESC
kingbase-# LIMIT 20;
event_type |       event        | samples
------------+--------------------+---------
Activity   | WalSenderMain      |     246
OnCPU      | CPU or Wait On CPU |       8
(2 行记录)




按会话下钻,看“谁在等、等到哪一步”:

SELECT ts, pid, user_name, app_name, db_name, state,
       event_type, event, cmd_type, phase, query_id
FROM perf.ksh_history
WHERE ts >= current_timestamp - interval '30 minutes'
ORDER BY ts DESC
LIMIT 100;


kingbase=# SELECT ts, pid, user_name, app_name, db_name, state,
kingbase-#        event_type, event, cmd_type, phase, query_id
kingbase-# FROM perf.ksh_history
kingbase-# WHERE ts >= current_timestamp - interval '30 minutes'
kingbase-# ORDER BY ts DESC
kingbase-# LIMIT 100;
              ts               |  pid   | user_name |    app_name     | db_name  |  state  | event_type |       event        | cmd_type |  phase  |      query_id      
-------------------------------+--------+-----------+-----------------+----------+---------+------------+--------------------+----------+---------+---------------------
2026-10-30 16:49:46.002684+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:41.002855+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:36.002709+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:31.002826+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:26.002485+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:21.002536+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:16.002670+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:11.003206+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:06.002760+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:49:01.002675+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:56.002920+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:51.003099+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:46.002505+08 | 126211 | esrep     | internal_rwcmgr | esrep    | running | OnCPU      | CPU or Wait On CPU | select   | plan    |  866170851240868677
2026-10-30 16:48:42.002265+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:37.002155+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:32.003070+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:27.002573+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:22.002751+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:17.002582+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:12.002265+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:07.003116+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:48:02.003140+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:58.002921+08 |  27464 | system    |                 | kingbase | running | OnCPU      | CPU or Wait On CPU | select   | unknown | 6472529144300561797
2026-10-30 16:47:53.003057+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:48.003181+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:43.002856+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:38.002636+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:33.002655+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:28.002463+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:23.002368+08 |  27483 | esrep     | node3           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:19.003055+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:14.002252+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:09.002823+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:47:04.002264+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:46:59.002283+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:46:54.002399+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:46:49.003124+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:46:44.002323+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:46:39.002419+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:46:34.002385+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
2026-10-30 16:46:29.002872+08 |  27482 | esrep     | node2           |          | running | Activity   | WalSenderMain      | unknown  | unknown |                   0
...
 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值