| name | kingbase-bloat-root-cause |
| description | KingbaseES(金仓)表/索引膨胀根因诊断专家。当用户提供 KingbaseES 实例连接信息(主机、端口、用户名、密码)并希望排查表膨胀、索引膨胀、死元组过多、autovacuum 不生效、vacuum 卡住等问题时触发。KingbaseES 默认采用 PG 兼容模式,因此与 PostgreSQL 共享大量 `pg_stat_*` / `pg_catalog` 视图,但 KingbaseES 提供了独有的在线压缩扩展 `sys_squeeze`(基于逻辑解码,类比 pg_squeeze)、`sys_repack` 命令行工具以及 `sys_spacequota` 磁盘配额,因此修复手段比 PG 更丰富。关键词包括:金仓表膨胀、金仓索引膨胀、膨胀根因、为什么会膨胀、死元组、dead tuple、autovacuum 没生效、vacuum 不清理、空间不回收、bloat、2PC 未提交事务、长事务导致膨胀、复制槽延迟、备库反馈膨胀、磁盘空间异常增长排查、sys_squeeze 怎么用、sys_repack 怎么用。即使用户只说'帮我看看金仓库为什么这么大'或'这张表怎么一直变大',只要涉及 KingbaseES 实例且怀疑膨胀,也应使用本 skill。本 skill 强调因果链分析而非仅报告膨胀数值:必须把膨胀数据与长事务、未提交 2PC 事务、长查询快照、复制槽延迟、备库 hot_standby_feedback 等根因逐一关联,给出可执行的诊断报告和只读安全的修复建议(包含 KingbaseES 特有的 sys_squeeze/sys_repack 在线压缩选项)。 |
| tags | ["KingbaseES","金仓","表膨胀","索引膨胀","膨胀潜在隐患","sys_squeeze","sys_repack"] |
| platform | ["claude-code","cursor"] |
| author | digoal |
| version | 1.0.0 |
| license | GNU General Public License v2.0 |
| homepage | https://github.com/digoal/skills |
KingbaseES 膨胀根因诊断(kingbase-bloat-root-cause)
深入诊断 KingbaseES(金仓)表/索引膨胀的根本原因,而不只是报告膨胀量。将膨胀现象与长事务、未结束的 2PC 事务、长时间运行的查询、复制槽延迟、备库 hot_standby_feedback 等阻塞 vacuum 的机制建立因果链,最终产出一份可直接用于修复决策的诊断报告。KingbaseES 默认采用 PG 兼容模式,因此诊断方法与 PostgreSQL 高度相通;但 KingbaseES 提供了 sys_squeeze 扩展(基于逻辑解码的在线压缩)与 sys_repack 命令行工具(无需全程排他锁),修复选项比标准 PG 更丰富。
KingbaseES 兼容性说明:
- 默认采用 PG 12 兼容模式(
server_version_num ≈ 120001),所有 pg_stat_* / pg_catalog 视图可用
- 标准 PG 的
pgstattuple 扩展不在 KingbaseES 默认扩展列表中,需要改用基于 pg_stat_user_tables + pg_class.reltuples / pg_relation_size 的统计信息估算法作为主手段;如需精确字节级数据,可临时安装 pgstattuple 的 kingbase 移植版本或使用 KingbaseES 特有的 sys_recovery 扩展读取死元组详情
- KingbaseES 特有的在线压缩能力:
sys_squeeze 扩展(依赖 wal_level=logical + max_replication_slots≥1,提供 squeeze.squeeze_table() 函数)与 sys_repack 命令行工具(无需逻辑解码,类比 pg_repack),均能在不完全锁表的情况下回收膨胀空间
- KingbaseES 还提供
sys_spacequota 扩展用于设置表空间磁盘配额,配合本 skill 用于诊断"磁盘空间耗尽背后的膨胀"
前置要求
- 客户端需要能够访问目标 KingbaseES 实例(主机、端口、用户名、密码,以及可选的备库连接信息)。
- 推荐使用
psql 命令行工具执行只读查询(KingbaseES 同时提供 ksql,语法与 psql 兼容,但本环境可能仅有 psql);未安装时按平台执行 apt-get install -y postgresql-client 或 yum install -y postgresql(KingbaseES 沿用 PG 客户端协议)。
- KingbaseES 默认不包含
pgstattuple 扩展;本 skill 默认采用基于统计信息的估算方法(见 references/bloat-estimation.sql),数值标注为"估算值"。如需精确字节级死元组数据,可启用 KingbaseES 的 sys_recovery 扩展(CREATE EXTENSION sys_recovery;)或 sys_squeeze(需要先 wal_level=logical 且重启)。
- 部分视图(如
pg_prepared_xacts、pg_stat_replication)需要 superuser 或 KingbaseES 的 MONITOR 权限角色;权限不足时在报告中注明并给出授权命令,不中断整体分析。
- 不要将密码写入磁盘文件或提交到版本库。运行
psql 时通过环境变量 PGPASSWORD 传递密码,仅在当前会话生效;scripts/run_query.sh 已按此方式封装。
- (与本 skill 一致,与 一致):