SuperAPI AI 工具集

postgres-diagnostics

数据与分析

查看项目

更新于 10-16 03:41

技能介绍

用途:回答 PostgreSQL 性能与健康问题,如“数据库为什么慢”“该优化什么”“哪些索引可删”“磁盘被什么占用”“autovacuum 是否跟得上”“哪个查询在吃数据库”。

主要能力:pgbot 为只读诊断工具,结论由 Go 确定性计算而非模型生成,绝不写数据库。若已连接 pgbot MCP 服务器,可调用 inspect(起点)、top_queries、vacuum_health、unused_indexes、why,返回稳定 JSON;logs、waits、activity、erd、report 目前仅 CLI。

使用方式:CLI 需一个具备读权限(最好含 pg_monitor)的连接串。常用命令:pgbot inspect "$DSN"(健康分与最差优先发现,--full 全量);pgbot queries "$DSN"(按总时间排序,--by-calls 重排);pgbot tables "$DSN"(大小与顺序/索引扫描);pgbot vacuum "$DSN";pgbot indexes "$DSN";pgbot tune "$DSN";pgbot why --duration 10s "$DSN"(实时等待采样,证据不足时拒绝猜测);pgbot activity "$DSN";pgbot waits --duration 10s "$DSN";pgbot logs "$DSN"(--live、--level error/audit);pgbot erd "$DSN"(--mermaid、--html);pgbot report "$DSN" > report.html;pgbot inspect "$DSN" --json。大库或远程可加 --timeout 60s。

首次运行:pgbot 不在 PATH 时安装:curl -fsSL https://pgbot.dev/install | sh,或 brew install pgrundev/tap/pgbot,或 npx @pgbot/cli。无连接串时检查 $DATABASE_URL 再向用户索取,绝不自行拼装凭据。角色或扩展缺失时运行 pgbot init --verify "$DSN" 检查 pg_monitor 与 pg_stat_statements;创建只读角色的 SQL 交给用户以管理员执行,绝不自行执行。

规则与限制:发现即事实,不得编造数字、表、索引或查询 id;未测量则说明还需采集什么。所有注意事项须带入建议,例如“未使用索引”计数按节点统计,主库看似未用而副本可能仍在用,删除前必须核对复制状态。不得执行用户查询来诊断,禁止 EXPLAIN ANALYZE,仅可建议 EXPLAIN(不带 ANALYZE)。按影响而非数量排序,先看风险(wraparound、固定 WAL 的复制槽、磁盘写满),再看延迟/存储收益。绝不写库,只把 DROP INDEX CONCURRENTLY / ALTER / VACUUM 语句交给用户自行执行。置信度低于 0.5 的发现用“可能”表述。输出应区分三类:pgbot 数据证明的发现、仍需复核的建议、因缺统计或权限而受阻的结论。pgbot 仅读取;除 explain/ask 会先声明并把去 PII 的发现发给 LLM 外,数据不出本机。