SuperAPI AI 工具集

postgres-performance

数据与分析

查看项目

更新于 10-15 16:45

技能介绍

用途:这是一项 PostgreSQL 性能工程技能,用于在优化查询、按规模设计表与索引,以及调试数据库性能问题时提供可复用的模式与检查清单。

主要能力:

  • 慢查询定位:启用 pg_stat_statements 并按 mean_exec_time 排序找出最慢查询。
  • 执行计划分析:使用 EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) 识别 Seq Scan、高 loops、昂贵 Sort、大中间结果集等信号。
  • 索引优化:用 CREATE INDEX CONCURRENTLY 建索引,并用 INCLUDE 构造覆盖索引以获得 Index Only Scan。
  • 大规模分页:以游标(keyset)分页替代 OFFSET,可配合 (created_at, id) 复合游标;文中给出 SQLAlchemy 异步示例。
  • 批处理更新:用 FOR UPDATE SKIP LOCKED 分批提交,避免一次性锁住海量行。
  • 聚合优化:近似计数、计数器缓存、物化视图(REFRESH MATERIALIZED VIEW CONCURRENTLY)。
  • 连接池调优:按场景选择 NullPool 或 AsyncAdaptedQueuePool,并设置 pool_size、max_overflow、pool_recycle、pool_pre_ping。
  • 读写分离、反范式化、按时间范围分区,以及用 Redis 缓存热点数据并在写入时失效。
  • 监控查询:表膨胀、索引膨胀与未使用索引、缓存命中率、长事务查询。

使用方式:按技能中的模式逐步应用,先识别慢查询,再分析计划,修改索引或查询后重新验证计划。部署前可对照性能检查清单:慢查询已优化、索引匹配查询模式、分页使用游标、大表分区、连接池与缓存到位、监控与 VACUUM/ANALYZE 已安排。

适用场景:数据库查询变慢、需要为增长做准备、排查锁与膨胀、设计分页与聚合方案时。

限制:以上为模式与示例,具体索引、分区阈值、池大小需按实际数据量与负载验证;连接池参数、max_connections 默认值等以实际环境为准,资料未提供版本兼容范围与基准测试数据。