Agent Skills
返回列表
🔒

PostgreSQL 诊断分析器

IT 运维与安全 更新于 2026.08.29

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

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/postgresql-diagnostic-analyzer 技能。

技能介绍

要解决的问题

PostgreSQL 上线一段时间后,性能问题通常不会自己浮出水面。慢查询只在高峰时段出现,锁等待会拖垮整个连接池,而表膨胀则在不知不觉中让磁盘和缓存越来越紧张。运维人员如果只盯着应用日志,很难判断瓶颈到底在 SQL 本身、并发争用,还是表与索引的物理布局。

技能如何工作

这个技能直接对 PostgreSQL 实例执行诊断查询,围绕三个核心问题展开:

  • 慢查询定位:读取 pg_stat_statements 中的聚合统计,找出累计耗时高、调用次数频繁且实际代价与逻辑读取差异明显的语句。
  • 锁竞争排查:结合 pg_stat_activity 查看当前会话的状态与等待情况,再对照 pg_locks 分析锁的持有者与等待者,定位阻塞链条。
  • 膨胀分析:借助 pgstattuple 检查表与索引元组的物理分布,评估空洞比例,必要时参考 pg_repack 的分析结果判断是否需要重建。

诊断过程分为三步:先采集系统视图的原始指标,再按问题维度归类,最后输出可定位到具体对象(库、表、语句)的结论。

适用边界与注意点

  • 依赖 pg_stat_statements 等扩展已经正确安装并完成初始化,否则相关视图可能为空或不存在。
  • pgstattuple 与 pg_repack 属于扩展级能力,执行时会对目标表加短暂锁或读取物理页面,建议在低峰期针对单表操作,避免影响线上写入。
  • 统计信息存在采样与刷新延迟,看到的可能是历史累计值而非瞬时状态,需要结合时间窗口判断趋势。
  • 诊断结果只反映执行计划与物理存储层面的信号,是否属于真实瓶颈仍需结合业务负载确认。

使用场景

  • 生产库出现大面积连接挂起,需要结合活动会话与锁视图定位阻塞源
  • 核心业务语句变慢,需要按累计耗时和逻辑读取找出异常 SQL
  • 磁盘使用率持续上涨,需要判断哪些表膨胀严重、值得重建
  • 高峰期查询延迟突增,需要在变更前预估锁等待风险并定位相关对象

适合人员

  • 负责生产 PostgreSQL 的数据库管理员,需要在故障窗口快速定位慢查询与锁等待根因
  • 维护交易或 SaaS 系统的后端工程师,需要在发版前评估 SQL 变更的阻塞风险
  • 管理存储成本的平台工程师,需要定期排查膨胀表并规划重建窗口
  • 承担性能优化的 SRE,需要把执行计划统计和物理存储状态关联起来做判断