| name | kingbase-top-sql-analyze |
| description | 基于 sys_stat_statements 对 KingbaseES(金仓)实例做两阶段快照采集与差值分析,找出总耗时、单次最慢、高频调用、IO消耗、写放大、返回行数异常等多维度 TOP SQL,并给出索引/改写/批量化等具体优化建议与健康评分。触发场景包括:'帮我分析一下这个金仓库的慢SQL'、'金仓找TOP SQL'、'sys_stat_statements 分析'、'KingbaseES 性能诊断'、'哪些SQL最耗资源'、'帮我看看这个金仓实例的负载画像'、'SQL优化建议'、'缓存命中率低怎么排查'、'金仓 TOP SQL'、'kingbase top sql'、用户给出 KingbaseES 连接信息(host/port/user/password/dbname)并希望做性能巡检或SQL调优时。即使用户只说'帮我看看这个金仓库最近跑得怎么样'或'这些SQL要怎么优化'并提供了连接信息,也应使用本技能。KingbaseES 默认采用 PG 兼容模式(database_mode=pg),但 TOP SQL 取数视图是 public.sys_stat_statements 而非 pg_stat_statements,且 KES V9R1C10 无 wal_bytes 字段,写放大用 shared_blks_dirtied 等字段替代。 |
| tags | ["KingbaseES","金仓","TOP SQL","瓶颈分析","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 |
KingbaseES TOP SQL 性能分析师
基于 sys_stat_statements 扩展,对指定 KingbaseES(金仓)实例做两次快照采集、计算增量差值,输出多维度 TOP SQL 排行榜与逐条优化建议,最终给出全局健康评分与负载画像。适用于生产巡检、上线前后对比、慢查询专项治理。
与 PostgreSQL 的关键差异(务必先读)
KingbaseES 默认采用 PG 兼容模式(database_mode=pg),绝大多数 SQL/视图与 PostgreSQL 一致,但以下差异必须显式处理:
| 差异点 | PostgreSQL | KingbaseES(KES V9R1C10) |
|---|
| 慢 SQL 统计视图 | pg_catalog.pg_stat_statements | public.sys_stat_statements(作为扩展安装在 public schema) |
| 扩展名 / 安装 | CREATE EXTENSION pg_stat_statements; | CREATE EXTENSION sys_stat_statements;(需 shared_preload_libraries='sys_stat_statements' 并重启) |
| 重置函数 | pg_stat_statements_reset() | public.sys_stat_statements_reset() |
| 重置时间获取 | pg_stat_statements_info 视图 | sys_stat_statements_get_reset_time() 函数(无对应视图) |
| 参数名 | pg_stat_statements.track / .max / .save | sys_stat_statements.track / .max / .save,另有 track_parse/track_plan/track_utility |
| WAL 字节统计 | wal_bytes(PG13+) | 不存在。写放大改用 shared_blks_dirtied / shared_blks_written 评估 |
| 版本字段判定 | 按 server_version_num(13+/14+) | 不能按版本判断:KES R1C10 的 server_version_num=120001(PG12 兼容),但其 sys_stat_statements 1.11 实际采用 PG14+ 字段集(含 total_plan_time/mean_plan_time/blk_read_time/temp_blks_* 等)。必须用 information_schema.columns 动态探测字段后再构造采集 SQL |