PostgreSQL 查询计划分析器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/postgresql-query-plan-analyzer-2。
技能介绍
要解决的问题
当 PostgreSQL 查询变慢时,第一反应通常是打开 psql 手动执行 EXPLAIN ANALYZE。这在单条语句上可行,但线上成百上千条慢查询摆在面前时,逐条粘贴计划树既不现实,也无法系统化筛选真正值得优化的对象。更麻烦的是,顺序扫描、嵌套循环连接和排序溢出(sort spill)这些典型问题混杂在大段输出里,人工排查极易漏掉关键信号。
技能如何工作
这个技能把整个流程自动化:
- 对目标慢查询执行
EXPLAIN ANALYZE BUFFERS,获取带实际执行时间和缓冲区命中情况的完整计划。 - 解析计划树,专门标记顺序扫描、嵌套循环连接和排序溢出等性能反模式。
- 结合
pg_stat_statements的聚合统计,先按资源消耗排序找出 Top 查询,再逐条分析,而不是无差别扫描所有语句。
典型路径是:从 pg_stat_statements 拿到「谁在吃资源」的清单,对具体语句执行 EXPLAIN ANALYZE BUFFERS 拿到「为什么慢」的证据,最后基于解析结果给出索引或改写方向。
适用边界与注意点
- 底层依赖
node-postgres,需要 Node.js 环境并能连接目标实例。 pg_stat_statements需在 PostgreSQL 中预先安装并开启(shared_preload_libraries),否则没有聚合数据可用。- 解析结果只提供诊断方向,索引是否生效、改写是否安全,仍需在测试库用真实数据量验证。
使用场景
- 数据库查询响应时间突增,需要快速定位顺序扫描、嵌套循环连接或排序溢出等具体瓶颈。
- 慢查询数量激增时,结合 pg_stat_statements 筛出资源消耗最高的语句,优先分析其执行计划。
- 验证索引优化效果时,对比优化前后的计划差异,确认扫描方式与缓冲区命中变化。
- 线上数据库频繁超时,需结合执行时间与缓冲区数据判断是否由排序溢出导致性能下降。
适合人员
- 数据库管理员,需要系统性优化查询性能,解决顺序扫描或嵌套循环导致的慢查询。
- 后端工程师,处理线上数据库性能故障,需要快速获取执行计划和资源消耗数据定位根因。
- 运维工程师,负责监控数据库运行状态,需要结合 pg_stat_statements 识别资源消耗高的查询。
- 数据库优化顾问,为客户制定性能优化方案时需要执行计划证据支撑索引或改写建议。