PostgreSQL 诊断操作手册
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/postgresql-diagnostic-runbook。
技能介绍
要解决什么问题
PostgreSQL 运行一段时间后,慢查询、锁等待和表膨胀会逐渐浮现,但排查这些问题往往需要在多个系统视图和日志之间来回切换。pg_stat_statements 记录了每条 SQL 的执行统计,pg_stat_activity 反映当前会话状态,而日志中的报错和慢查询记录则分散在 pgbadger 能解析的文件中。如果缺乏统一的诊断路径,很容易在信息碎片中浪费时间。
核心诊断能力
- 慢查询定位:通过
pg_stat_statements收集 SQL 的调用次数、总耗时和平均执行时间,快速锁定高开销语句 - 锁争用分析:结合
pg_stat_activity查看会话的等待事件和阻塞关系,判断是死锁还是长事务持锁 - 日志深挖:使用
pgbadger对 PostgreSQL 日志做离线分析,还原峰值时段的查询行为 - 表膨胀检测:借助
pgstattuple扩展直接读取堆表的物理结构,评估死元组比例和是否需要 VACUUM
适用边界
- 技能文档提取自 node-postgres 上游仓库,部分安装和 API 说明面向 Node.js 客户端场景,与纯数据库端诊断存在视角差异
pgstattuple需要作为扩展单独安装并授予执行权限pgbadger分析依赖完整的日志输出配置,日志级别过低会遗漏关键事件- 性能基线需要结合业务负载和硬件规格综合判断,技能不替代容量规划
使用场景
- 监控告警显示接口响应超时,需通过 pg_stat_statements 快速定位耗时最高的 SQL 语句
- 业务反馈偶发性卡顿,需用 pg_stat_activity 排查会话是否因锁等待而阻塞
- 定期分析数据库日志,借助 pgbadger 还原高峰期的异常查询行为和报错信息
- 磁盘空间增长异常,需用 pgstattuple 检查核心表的死元组比例和膨胀程度
适合人员
- 数据库管理员,需定期巡检 PostgreSQL 集群性能并处理告警事件
- 后端工程师,遇到线上慢查询或锁等待时需快速定位根因
- SRE 运维工程师,负责维护数据库稳定性并处理性能容量问题
- 数据平台工程师,需要优化复杂查询以避免拖慢报表生成速度