PostgreSQL 性能诊断套件
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/postgresql-performance-diagnostic-suite。
技能介绍
解决什么问题
PostgreSQL 慢查询排查往往要在不同的系统视图和日志之间来回切换:pg_stat_statements 告诉你哪条 SQL 平均耗时最高,pg_stat_activity 告诉你当前谁在阻塞谁,EXPLAIN ANALYZE 告诉你这条语句的执行计划是否合理,而真正吃满 IO 的原因可能还藏在日志里。手工把这些线索拼起来,既耗时又容易漏掉关键关联。
核心能力
这个套件把上述诊断路径整合到一套流程里:
- 语句级分析:通过
pg_stat_statements聚合 SQL 的执行次数、平均延迟和总耗时,快速定位真正的热点语句。 - 会话级排查:借助
pg_stat_activity观察活跃会话的状态,识别长事务、锁等待和闲置连接堆积。 - 执行计划审查:对目标语句运行
EXPLAIN ANALYZE,看清实际执行路径与代价分布。 - 日志深挖:集成
pgBadger做 PostgreSQL 日志分析,从日志中还原峰值时段的负载画像。 - 索引建议:结合
pg_stat_user_tables的表级统计,判断哪些表缺少合适的索引。
典型流程是:先用 pg_stat_statements 筛出 TOP 慢查询,再看这些语句执行时 pg_stat_activity 中的会话状态,接着对单条语句跑 EXPLAIN ANALYZE 验证执行计划,最后用 pgBadger 核对日志中的时间线是否吻合。
适用边界
这套诊断基于 node-postgres(pg)驱动,适合已经用 Node.js 连接 PostgreSQL 的项目。它解决的是「读数据、定位问题」,不包含自动改库、自动重建索引这类写操作——索引建议只是建议,执行与否仍由你决定。此外,pg_stat_statements 需要在 shared_preload_libraries 中预先加载,pgBadger 依赖足够的日志输出配置,否则相关数据源不会产出有效信息。
使用场景
- 线上业务接口变慢,用 pg_stat_statements 找出平均耗时最高的几条 SQL,再决定是否优化
- 长事务阻塞写操作,借助 pg_stat_activity 查看当前会话状态,确认等待来源
- 核心查询需要调优,通过 EXPLAIN ANALYZE 核对实际执行路径与代价分布
- 节点日志体量变大,用 pgBadger 分析日志中的报错与慢查询时间线,辅助复盘
适合人员
- 负责线上 PostgreSQL 的后端工程师,需要快速定位慢查询并给出修复方向
- 编写数据库访问层的 Node.js 开发者,想确认当前 SQL 的执行计划是否合理
- 管理数据库性能的运维人员,需要在变更后复盘负载来源
- 为数据库设计索引的工程师,想依据表级统计判断哪些表缺少索引