Agent Skills
返回列表
🔒

PostgreSQL 查询计划分析器

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 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 识别资源消耗高的查询。
  • 数据库优化顾问,为客户制定性能优化方案时需要执行计划证据支撑索引或改写建议。