Agent Skills
返回列表
🔒

PostgreSQL查询诊断

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/postgresql-query-diagnostics

技能介绍

慢查询诊断的现实困境

在 PostgreSQL 日常运维中,慢查询往往是最先暴露性能问题的表象。但真正的挑战在于:如何从海量执行记录中快速定位根因?开发者通常需要手动查询 pg_stat_statements 统计表、逐条解析 EXPLAIN ANALYZE 输出、翻看数据库日志寻找异常模式,再结合表统计信息判断索引是否合理。这个过程不仅耗时,还容易遗漏关键细节——尤其是当查询计划随数据分布变化而产生偏差时。

技能的核心工作方式

PostgreSQL 查询诊断 技能将这一诊断流程自动化,整合三类核心数据源协同分析:

  • pg_stat_statements 解析:提取数据库中累积的 SQL 执行统计,包括平均执行时间、调用次数和行处理量,快速筛出 TOP 慢查询
  • EXPLAIN ANALYZE 输出解读:对目标查询生成实际执行计划,识别全表扫描、嵌套循环退化、排序溢出等瓶颈节点
  • pg_stat_activity 监控:捕获当前活跃会话状态,帮助定位正在长时间运行或处于等待状态的查询
  • pgBadger 日志集成:分析 PostgreSQL 日志文件,提取慢查询日志模式和错误趋势
  • pg_stat_user_tables 索引建议:基于表的实际使用统计(扫描次数、索引命中比例)生成索引优化建议

诊断过程分为三步:首先通过统计表定位候选慢查询,然后对目标 SQL 执行计划分析,最后结合日志和表统计给出可操作的优化方向。

适用边界与注意事项

该技能的诊断精度依赖底层扩展的正确配置。pg_stat_statements 需要在 postgresql.conf 中启用并共享库加载,否则无法采集执行统计;pgBadger 分析需要提供完整的 PostgreSQL 日志路径,且日志中需包含足够详细的 log_min_duration_statement 设置。此外,索引建议基于统计信息而非实际数据分布,对于极端数据倾斜或自定义操作符的场景,建议结合 pg_stat_user_indexes 进一步验证。最后,执行计划分析应配合 ANALYZE 更新统计信息,避免因陈旧统计导致的误判。

使用场景

  • 线上PostgreSQL数据库出现查询超时告警,需要快速定位TOP慢查询并分析执行计划瓶颈
  • 优化高并发写入场景下业务SQL,需要通过pg_stat_statements找出耗时排名靠前的查询
  • 排查数据库性能抖动原因,需要结合pgBadger日志分析慢查询趋势和错误模式
  • 需要为频繁全表扫描的业务表生成索引建议,基于pg_stat_user_tables统计判断优化方向

适合人员

  • 数据库管理员:需要在生产环境快速诊断慢查询根因,减少故障排查和修复时间
  • 后端开发工程师:优化自己编写的业务SQL,需要查看EXPLAIN ANALYZE输出并获取索引建议
  • 数据库运维工程师:监控数据库性能趋势,需要基于日志和统计信息给出优化方案
  • 数据平台工程师:排查报表查询变慢问题,需要从数据库层面分析性能瓶颈