| name | kingbase-perf-insight |
| description | 基于 KingbaseES(金仓)历史统计快照,为指定时间段生成 AWS Performance Insights 风格的深度性能诊断报告。触发场景:用户给出金仓实例连接信息(host/port/user/密码)+ 快照 schema + 分析时间段,并要求'性能诊断'、'性能分析报告'、'AAS 分析'、'Top SQL 分析'、'等待事件分析'、'数据库负载分析'、'为什么这段时间金仓很慢'、'定位性能瓶颈'、'类似 AWS PI 的报告'、'金仓性能洞察'。即使用户只说'帮我分析一下昨晚 2-3 点金仓为什么慢'并提供了连接信息,也应触发本技能。KingbaseES 默认采用 PG 兼容模式,但快照取数来自 `sys_stat_statements` 而非 `pg_stat_statements`,请注意区分。 |
| tags | ["KingbaseES","金仓","性能洞察","performance insight","快照分析","sys_stat_statements"] |
| platform | ["claude-code","cursor"] |
| author | digoal |
| version | 1.0.0 |
| license | GNU General Public License v2.0 |
| homepage | https://github.com/digoal/skills |
kingbase-perf-insight:KingbaseES 性能诊断报告生成器
给定金仓实例连接信息、快照 schema、分析时间段,从历史快照中定位最佳快照对,计算差值指标,产出一份 AWS Performance Insights 风格的中文深度性能报告(AAS、Top SQL、等待事件推断、按库/用户拆解、根因分析、优化优先级)。
本技能依赖已通过金仓快照采集机制(与 pg-stat-snapshot 同构、但取数改为 sys_stat_statements 的快照采集流程)持续采集的历史快照数据,自身不采集快照、不修改任何数据。
KingbaseES 兼容性说明(关键差异,务必先读):
- KingbaseES 默认采用 PG 兼容模式,
pg_stat_activity / pg_stat_database / pg_settings / pg_postmaster_start_time() 等视图/函数与 PostgreSQL 12 基本一致。
- Top SQL 取数来自
sys_stat_statements(或 sys_catalog.sys_stat_statements),不是 pg_stat_statements。KES V9R1C10 上没有 pg_stat_statements 关系。
sys_stat_statements 字段与 PG 基本一致(queryid/calls/total_exec_time/rows/shared_blks_hit/shared_blks_read/blk_read_time/blk_write_time 等),但没有 wal_bytes/wal_records(WAL 维度不适用,应跳过),多了 parses/total_parse_time/plans/total_plan_time(解析/规划耗时,可作金仓特色分析维度)。
- 没有
sys_stat_statements_info 视图(PG13 才有),因此 Step 3 的 reset 校验只能依赖快照表里的 source_reset_time 与差值符号合理性(见 Step 3)。
前置要求
- 客户端:
psql(金仓自带 ksql 客户端,语法与 psql 高度兼容;本技能脚本默认用 psql,若只有 ksql 可等价替换)或 Python3 + psycopg2。scripts/run_analysis.sh 走 psql,scripts/run_analysis.py 走 python sdk,两者可互换。
- 目标实例已存在快照 schema(默认
stat_snapshot),且包含至少两条覆盖分析时间段的快照记录。
- 连接凭据只能通过环境变量传递(
PGPASSWORD,或 ~/.pgpass),禁止在命令行参数、日志或报告中明文出现密码(两个 runner 均不接受明文密码参数)。
- 首次执行前用
\d {schema}.* 确认实际表结构;下文 SQL 假设的表名/字段名如与实际不符,需据实调整(见"表结构假设"一节)。
连接约定(优先级从高到低)
- 用户明确提供的连接参数(host/port/user/password/dbname);
- 环境变量
PGHOST PGPORT PGDBNAME PGUSER PGPASSWORD(兼容 PGDATABASE;即使金仓手册把这些变量写作 KINGBASE_HOST/ 等,本技能);