由 John Doe 九月 22, 2026
pgAssistant 可以对 PostgreSQL 进行深度分析,将分析结果转化为可落地的修复方案,追踪变更情况,并量化评估工作负载的实际优化效果。
目录

什么是 pgAssistant?
pgAssistant 是一款开源平台,能够将 PostgreSQL 的运行数据转化为优先级明确的优化行动。它将数据库内省分析、工作负载分析、专项检查模块、落地规划、历史数据对比以及效果量化功能整合在同一个 Web 界面中。
pgAssistant Collector 通过历史工作负载与运行环境数据采集扩展了这一闭环,将优化建议与实际观测结果相关联。二者结合,能够帮助团队回答四个核心问题:
- 应该优化什么? 发现并分级排序 PostgreSQL 存在的风险、低效问题以及性能调优机会。
- 我们决定做什么? 将优化建议整合为有序的执行计划,明确由开发、运维或双方共同负责。
- 我们实际修复了什么? 追踪优化建议的全生命周期:新增问题、持续存在的问题、已不再出现的问题,避免简单地认为 “问题消失” 就等于 “优化已落地”。
- 效果如何? 将变更与执行时长、调用量、查询类型、PostgreSQL 环境变更以及工作负载影响相关联。
AI 辅助功能为可选项。核心检查逻辑均为确定性规则,无需大语言模型即可使用。
功能演示
执行计划将技术分析结果转化为有序的修复方案,包含优先级、责任方、依赖关系以及实施指导。

持续优化闭环
pgAssistant 并非实时监控系统。它通过周期性的数据库与工作负载采集构建持续优化闭环;实时监控平台仍然负责观测当前即时状态。
观测 → 诊断 → 优先级排序 → 制定方案 → 落地实施 → 再次采集 → 效果衡量
↑ │
└────────────────────────── 循环往复 ────────────────────┘
pgAssistant 支撑完整的优化闭环:
- 观测: 采集器对工作负载、运行环境和检查结果进行可重复的快照采集。
- 诊断: 确定性检查模块解析 SQL、模式、配置、运维和生命周期相关问题。
- 优先级排序: 根据紧急程度、置信度、实施成本和实际工作负载影响对问题进行评级。
- 制定方案: 执行计划将相关优化建议整合为有序的、分团队负责的工作包。
- 验证: 基于历史数据识别新增和已消失的优化建议,同时明确区分 “观测不到问题” 和 “确认已落地”。
- 衡量: 工作负载洞察对比历次采集结果,展示性能、查询类型、环境配置和优化建议的变化。
产品各组件共同服务于同一闭环,而非生成零散的报告:
PostgreSQL 运行数据
│
┌─────────────────┼─────────────────┐
│ │ │
全局检查模块 索引检查模块 参数与运维检查模块
│ │ │
└─────────────────┼─────────────────┘
↓
执行计划
↓
落地实施
↓
工作负载洞察
↓
新的运行数据


从问题发现到落地执行
执行计划将相关问题分组整理为有序的、分团队负责的工作包,明确依赖关系与责任分工,帮助团队从诊断直接推进到执行,而非面对一份杂乱无章的优化建议清单。
优先级 1 — 开发团队
重写查询 Q42
在 orders 表的 customer_id 字段上补充缺失的外键索引
优先级 2 — 运维团队
针对高更新频率的相关表调整自动清理参数
核查与工作负载相关的 PostgreSQL 配置项
优先级 3 — 开发/运维协同
删除未使用的索引,评估 public.orders 表的索引优化机会
核心特性
- 多数据库支持 — 连接单个 PostgreSQL 实例,列出其所有数据库,并选择目标数据库进行分析。
- 全局检查模块 — 覆盖全数据库的确定性检查,按优先级、置信度、影响范围和实施成本排序。
- 执行计划 — 整合全局、索引、参数和自动清理的优化建议,形成分配给开发、运维或双方协同的有序工作包。
- 工作负载洞察 — 对比历次采集数据,突出优化建议和 PostgreSQL 环境的变更,按工作负载影响对查询排序。
- 持续验证 — 追踪新增、持续存在和已消失的优化建议,避免将 “观测不到问题” 等同于 “确认已优化”。
- PDF 报告导出 — 生成面向开发和 / 或运维团队的格式化执行计划报告,包含目录、运维要求、依据说明和 SQL 命令。
- 工作负载优先级分析 — 结合执行频率和总执行影响,识别占用数据库工作负载占比最高的查询。
- 索引检查模块 — 分析执行计划,识别可落地的索引优化机会、冗余索引和外键覆盖问题。
- 参数检查模块 — 结合工作负载信号,给出 PostgreSQL 参数调整建议。
- 自动清理调优 — 分析集群级和表级配置、统计信息过期情况、运维活动,以及表级调优机会。
- 模式与表分析 — 检查 DDL、表关系、表健康度、索引、膨胀指标和分区表。
- pgTune 配置生成 — 通过引导式界面生成 PostgreSQL 基础配置方案。
- 可选大语言模型辅助 — 可请求 SQL 重写、模式设计反馈、命名规范检查和上下文解释。
单数据库与数据库集群模式
pgAssistant 支持两种互补的运行模式:
| 模式 | 能力说明 |
|---|---|
| 单数据库 | 深度的 SQL、模式、配置和运维分析,为开发人员和 DBA 提供具体可落地的修复方案。 |
| 数据库集群 | 跨数百或数千个数据库的标准化采集、集中化优先级排序、历史对比和趋势分析。 |
对于大规模 PostgreSQL 集群,另有两个配套项目实现自动化、集中化的分析:
| 项目 | 作用 |
|---|---|
| pgAssistant Collector | 在指定的数据库上运行选定的 pgAssistant 任务,并将历史快照存储在集中的 PostgreSQL 仓库中。 |
| pgAssistant Grafana | 展示集群范围的优先级和趋势,包括需要关注的数据库、排名靠前的查询、检查结果和优化建议演变情况。 |
三者结合,团队可以:
- 跨环境、应用、分组和责任方采集一致的诊断数据;
- 识别哪些数据库需要优先修复;
- 从集群总览下钻到单个数据库、查询或优化建议;
- 分配并规划开发与运维的修复工作;
- 对比历次采集结果,包括工作负载和 PostgreSQL 环境变更;
- 追踪高优先级问题是仍然存在还是已不再出现;
- 衡量工作负载优化效果,确定下一步优化方向。
PostgreSQL 集群 → 采集器 → 数据仓库 → pgAssistant → 执行计划
↑ ↓ ↓ ↓
└──────────── 再次采集 ← 效果衡量 ← 实施变更
↓
Grafana 集群总览
在线演示
访问以下地址体验数据库分析界面:https://ov-004f8b.infomaniak.ch/
postgresql://postgres:demo@demo-db:5432/northwind
在 Grafana 演示地址 中探索集群监控面板。演示账号信息可在 pgAssistant Grafana 仓库 中查看。
演示数据库每日重置。AI 功能已禁用:请勿输入个人 API 密钥。
检查模块覆盖范围与实施方案
全局、索引、参数、自动清理和填充因子检查模块生成可复现的优化建议。执行计划按优化目标或影响对象将相关问题整合为有序的工作包,而非零散的检查项和 SQL 命令列表。
查看完整检查模块覆盖范围
当前可用的检查模块覆盖:
- 全局检查模块 — 数据模型与模式: 外键列数据类型不一致;无主键的表;外键覆盖率低或缺失;序列接近最大值。
- 全局检查模块 — 索引: 外键上缺失有效索引;唯一索引覆盖了非唯一索引;完全重复的未使用索引;部分重复的低使用率索引;未使用的非约束索引;无效或不可用的索引;索引占表大小比例过高的表。
- 全局检查模块 — 统计信息、存储与运维: 表统计信息可能过期;预估的表膨胀和死元组量过高;从未执行过清理或自动清理的表;紧急死元组清理;标记为需要自动清理运维的表;集群范围的自动清理负载;导致 PostgreSQL 缓冲缓存命中率低的表;异常长事务。
- 全局检查模块 — 配置与生命周期: 处于关闭或非最优状态的重要 PostgreSQL 配置项;不再受支持的 PostgreSQL 主版本;可升级的次版本。
- 索引检查模块 — 查询计划: 针对顺序扫描和残留过滤的索引优化机会;更稳妥的单列或组合索引候选;支撑连接操作的索引;支撑
ORDER BY(包括ORDER BY ... LIMIT)的索引;支撑GROUP BY的索引;识别已存在的等效索引;标注因行数估算偏差或统计信息问题导致不适合自动推荐的场景。 - 参数检查模块 — 工作负载配置: 基于工作负载和通用计划信号,评估
work_mem、effective_cache_size、random_page_cost、effective_io_concurrency、max_parallel_workers_per_gather和max_wal_size等参数。 - 自动清理检查模块 — 表级操作: 针对从未分析、统计信息过期、从未清理、清理过期、行更新频繁、死元组压力大的表,给出
ANALYZE、VACUUM以及表级自动清理调优建议。 - 自动清理检查模块 — 集群配置: 评估
autovacuum、autovacuum_max_workers、autovacuum_naptime、清理与分析的比例因子和阈值、autovacuum_vacuum_cost_delay、autovacuum_vacuum_cost_limit以及log_autovacuum_min_duration。 - 填充因子检查模块: 识别可能受益于填充因子调整实验的表,结合 HOT 更新效率、索引列更新、清理压力和长事务验证信号,并标注需要逐页检查的分区表。
查询与工作负载分析
pgAssistant 可以分析单条 SQL 语句,也可以分析由 pg_stat_statements 采集的整体工作负载:
- 通过
EXPLAIN ANALYZE获取真实执行计划; - PostgreSQL 16+ 版本支持参数化查询的通用计划;
- 连接、扫描、排序、聚合、缓冲区、WAL 和行数估算洞察;
- 结合模式和列统计信息给出索引建议;
- 查询参数映射与配置核查;
- 涉及表的关系可视化。
注意:
EXPLAIN ANALYZE会实际执行语句。请仔细核查查询内容,并使用合适权限的数据库账号,在开发环境外尤其需要注意。
界面截图
控制面板

全局检查模块概览

全局检查模块优化建议

执行计划 PDF 报告

工作负载优先级排序

索引检查模块

自动清理调优
