Agent Skills
返回列表
💻

PostgreSQL 优化

开发编程 更新于 2026.08.30

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

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/postgres-optimization-sh-g3z1h6。

技能介绍

要解决的问题

PostgreSQL 在生产环境中的慢查询通常不是单点参数问题,而是索引选择、查询计划、分区策略、连接模型和反模式叠加的结果。资料聚焦于一组可直接落地的检查项:如何从 EXPLAIN ANALYZE 中识别缺失索引,何时对超过 10M 行的表做分区,JSONB 字段应如何避免误用,以及连接池应使用 transaction-level 还是 session-level 模型。

技能如何工作

该技能以优化清单方式组织内容,而不是简单罗列参数。核心步骤包括:

  • 阅读查询计划:关注 Seq Scan on large tables、高行数估计的 Nested Loop、没有索引支撑的 Sort,以及 shared hit 与 shared read 的缓存效率差异。
  • 索引策略:建议索引匹配真实查询模式,并优先检查 pg_stat_statements;复合索引按 equality、sort、range 列排序。
  • 分区与数据模型:对持续按分区键过滤的大表考虑分区;大型二进制内容不建议直接塞进 JSONB,而应使用独立表和合适类型。
  • 连接池与调优:Web 应用通常适合事务级连接池;使用 prepared statements 或 temp tables 的应用更适合会话级连接池。清单还建议启用 pg_stat_statements,并定期识别未使用索引。

注意边界:这份资料适合已有 PostgreSQL 服务并需要排查慢查询的工程场景,不适合当作安装手册或通用数据库入门教程。它强调先分析真实查询路径,再做索引、分区和连接池调整。

使用场景

  • 上线前用 `EXPLAIN ANALYZE` 复核关键查询,确认索引和连接池配置没有遗漏。
  • 排查大表 `Seq Scan`,判断是否为缺失索引或复合索引顺序错误导致慢查询。
  • 对超过 10M 行且按分区键过滤的表,评估分区改造并识别未使用索引。
  • 为 Web 应用选择 `PgBouncer` / `pgcat` 的事务级或会话级连接池模型。

适合人员

  • 负责线上 PostgreSQL 慢查询排查的后端工程师,需要依据查询计划和索引清单定位问题。
  • 需要为大表设计索引和分区策略的数据库工程师,希望避免全表扫描和锁表风险。
  • 维护 Web 服务连接池的应用开发者,需要选择事务级或会话级连接模型。
  • 做上线前数据库性能检查的技术负责人,需要核对 JSONB、连接池与 `pg_stat_statements` 配置。