| name | kingbase-sql-tuning-advisor |
| description | 以 KingbaseES(金仓)DBA 专家视角,给定一条 SQL 及目标金仓实例的连接信息,连接实例分析执行计划(EXPLAIN / EXPLAIN ANALYZE),结合表定义、索引定义、约束、统计信息(pg_stats)与相关 GUC 参数(work_mem、shared_buffers、effective_cache_size、random_page_cost 等),给出可落地的 SQL 优化建议(索引建议、SQL 改写、参数调整、统计信息维护、分区建议)。触发条件:用户提到"金仓SQL优化"、"金仓执行计划分析"、"这条 SQL 慢"、"帮我看看这个执行计划"、"explain 分析"、"索引建议"、"这个查询怎么优化"、"帮我调优这条金仓 SQL"、"SQL tuning"、"慢查询分析"、"KingbaseES 调优",并提供了 SQL 语句 + 金仓实例连接信息(host/port/dbname/user/password)。即使用户只说"帮我看看这条 SQL 在金仓上为什么慢"并附上连接串,也应使用本 skill。默认假设金仓实例运行在 PG 兼容模式(database_mode=pg)。若 SQL 是 DML(INSERT/UPDATE/DELETE/MERGE),本 skill 强制要求在事务中执行、加语句超时后回滚,绝不提交;若 SQL 含 $1/$2 等绑定变量,本 skill 会主动构造合理示例参数或与用户确认后再取执行计划。 |
| tags | ["KingbaseES","金仓","SQL 优化","执行计划"] |
| platform | ["claude-code","cursor"] |
| author | digoal |
| version | 1.0.0 |
| license | GNU General Public License v2.0 |
| homepage | https://github.com/digoal/skills |
kingbase-sql-tuning-advisor:KingbaseES(金仓)SQL 调优顾问
给定一条 SQL 和一个金仓实例的连接信息,像资深 DBA 一样:拿到真实执行计划 → 结合库内对象定义与运行参数 → 定位瓶颈 → 给出可执行、可回滚验证的优化建议。本技能是 pg-sql-tuning-advisor 的金仓移植版,全部脚本与 SQL 已在 KingbaseES V009R001C010(PG 兼容模式)实测通过。
与 PostgreSQL 的兼容性说明(金仓差异,务必先读)
KingbaseES 默认采用 PG 兼容模式(database_mode=pg,对应 PG 12 语义,server_version_num=120001),因此本技能使用的系统目录/视图与 PostgreSQL 完全一致:pg_stats、pg_stat_user_tables、pg_class、pg_indexes、pg_constraint、pg_settings 等均可直接复用。以下为金仓特有差异,调优时必须注意:
| 项目 | PostgreSQL | KingbaseES(本技能按此执行) |
|---|
| 统计语句视图 | pg_stat_statements | sys_stat_statements(金仓版,位于 public schema,实测可查;pg_stat_statements 默认不存在) |
| 主配置文件 | postgresql.conf | kingbase.conf(用 SHOW config_file; 确认实际路径) |
| EXPLAIN 选项 | EXPLAIN (ANALYZE, BUFFERS, VERBOSE, FORMAT TEXT) | 语法兼容,实测可用;BUFFERS 必须配 ANALYZE(与 PG 12 相同) |
hash_mem_multiplier | PG13+ 可用 | V9R1C10 实测不存在(PG12 兼容版无此参数),Hash 溢盘只能调 work_mem |
| 假设索引扩展 | hypopg | V9R1C10 默认不提供(pg_available_extensions 实测无),无法做假设索引实测,只能基于经验推断计划变化 |
| 在线建索引 | CREATE INDEX CONCURRENTLY | 实测支持,但同样不能在事务块内执行,必须单独会话/单独 psql -c |
| 扩展统计 | CREATE STATISTICS | 实测支持(CREATE STATISTICS s ON a, b FROM t; 可用) |
| 会话超时参数 | statement_timeout/lock_timeout/idle_in_transaction_session_timeout | 实测均可设置 |
| 客户端 | psql / psycopg2 / psycopg3 | PG 的 psql 可直接连接金仓 V9;python 驱动实测兼容 |
| 其他 |