跳转到主要内容

七成正确的调优器:界定 pig pg tune 的边界

pig pg tune 如何根据硬件与工作负载计算 PostgreSQL 初始参数。

决策日期: 2026-03-21
状态: 2026-03-23 实现,随 pig v1.3.2 发布。
当前参考: pig pg tune
范围: 根据硬件、PostgreSQL 版本与工作负载类型生成初始配置。

决策

pig pg tune 计算 PostgreSQL 核心参数,输出结果供用户审阅。命令探测 CPU、内存与磁盘容量, 接受用户指定的覆盖值,并按选定的工作负载类型计算。文本输出展示生成的参数;JSON 和 YAML 输出 包含输入条件与参数。用户审阅结果后,选择需要的参数,通过现有配置系统应用。

原名“七成正确的调优器”表达的是实用的起点,并非测得的准确率。

背景

新安装的数据库尚无工作负载数据,也需要一套初始配置。小型开发机与大型数据库服务器无法 共用一份固定配置。根据硬件计算参数,可以提供可复现、便于检查和调整的基线。

考虑过的方案

  • 发布一份固定配置。 内存与并行参数需要随主机规模变化。
  • 构建自适应调优器。 这需要工作负载数据、实验与反馈循环。
  • 自动应用参数。 用户需要先审阅结果,再通过现有配置流程决定如何部署。
  • 计算全部 PostgreSQL 参数。 复制、安全与可用性设置还取决于硬件探测无法确定的业务要求。

契约

  • 使用探测到的硬件,或用户明确指定的 CPU、内存与磁盘值。
  • 通过 oltp、olap、tiny、crit 选择计算公式。
  • 相同的实际输入与 PostgreSQL 版本产生相同参数。
  • 结构化结果包含实际采用的工作负载类型、硬件与 PostgreSQL 版本。
  • 文本参数按固定顺序输出,标题注明 SSD 假设。
  • 校验输入范围,并省略所选 PostgreSQL 版本不支持的参数。
  • 保持配置文件与运行中的服务器不变。

影响

用户可以将输出用于新安装或初步容量规划。先审阅参数,通过现有配置系统应用,再测量真实 工作负载。后续调整应依据查询并发、检查点行为、存储延迟与复制要求。

验证与演进

初始实现为 60eecfe。 v1.3.2 首次发布参数生成功能。 当前实现 返回结果供输出层渲染。 tune_test.go 覆盖工作负载公式、资源边界、覆盖值与版本相关参数。

当前状态

参数生成功能已经发布。 输入与输出示例见 pig pg 参考文档。