场景模板
Pigsty 提供四种预置的 Patroni/PostgreSQL 配置模板,针对不同的使用场景进行了参数优化:
| 模板 | CPU 核心 | 适用场景 | 特点 |
|---|---|---|---|
/docs/pgsql/template/oltp.yml | 4-128C | OLTP 事务处理 | 高并发、低延迟、高吞吐 |
/docs/pgsql/template/olap.yml | 4-128C | OLAP 分析处理 | 大查询、高并行、长事务 |
/docs/pgsql/template/crit.yml | 4-128C | 一致性优先业务 | 一致性优先、详细审计 |
/docs/pgsql/template/tiny.yml | 1-3C | 微型实例 | 资源受限、低配环境 |
您可以通过 pg_conf 参数来选择使用哪个配置模板,默认为 /docs/pgsql/template/oltp.yml。
四套标准模板都将 wal_level 设为 logical。从 PostgreSQL 18.6 起,服务端新增 output_plugin_libraries 安全白名单;Pigsty 默认允许内置的 pgoutput、test_decoding 与默认随 pgsql-main 安装的 wal2json。如果要使用其他逻辑解码输出插件,应在评审其代码与权限边界后,将准确的库名加入 pg_parameters;Patroni 会在不支持该参数的旧 PostgreSQL 版本上过滤模板项。
使用模板
要使用特定的配置模板,只需在集群定义中设置 pg_conf 参数。
建议同时设置 node_tune 参数,使操作系统级别的调优与数据库调优保持一致:
对于核心金融业务场景,您可以使用 /docs/pgsql/template/crit.yml 模板:
对于低配虚拟机或开发环境,可以使用 /docs/pgsql/template/tiny.yml 模板:
模板对比
四种模板在关键参数上有显著差异,以适应不同的业务场景。以下是主要差异对比:
连接与内存
| 参数 | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| max_connections | 500/1000 | 500 | 500/1000 | 250 |
| work_mem 范围 | 64MB-1GB | 64MB-8GB | 64MB-1GB | 16MB-256MB |
| maintenance_work_mem | 25% 共享缓冲区 | 50% 共享缓冲区 | 25% 共享缓冲区 | 25% 共享缓冲区 |
| max_locks_per_transaction | 1-2x maxconn | 2-4x maxconn | 1-2x maxconn | 1-2x maxconn |
并行查询
| 参数 | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| max_worker_processes | max(cpu+16, 24) | max(cpu+20, 28) | max(cpu+16, 24) | max(cpu+12, 20) |
| max_parallel_workers | 50% cpu | 80% cpu | 50% cpu | 50% cpu |
| max_parallel_workers_per_gather | 20% cpu (max 8) | 50% cpu | 0(禁用) | 0(禁用) |
| parallel_setup_cost | 2000 | 1000 | 2000 | 1000 |
| parallel_tuple_cost | 0.2 | 0.1 | 0.2 | 0.1 |
同步复制
| 参数 | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| synchronous_mode | 取决于 pg_rpo | 取决于 pg_rpo | 强制开启 | 取决于 pg_rpo |
| data_checksums | 可选 | 可选 | 强制开启 | 可选 |
Vacuum 配置
| 参数 | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| vacuum_cost_delay | 20ms | 10ms | 20ms | 20ms |
| vacuum_cost_limit | 2000 | 10000 | 2000 | 2000 |
| autovacuum_max_workers | 3 | 3 | 3 | 2 |
超时与安全
| 参数 | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| idle_in_transaction_session_timeout | 10min | 禁用 | 1min | 10min |
| log_min_duration_statement | 100ms | 1000ms | 100ms | 100ms |
| default_statistics_target | 400 | 1000 | 400 | 200 |
| track_activity_query_size | 8KB | 8KB | 32KB | 8KB |
| log_connections | 仅授权 | 仅授权 | 全部阶段 | 默认 |
IO 配置(PG18)
| 参数 | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| io_workers | 25% cpu (4-16) | 50% cpu (4-32) | 25% cpu (4-8) | 3 |
| temp_file_limit | 1/20 磁盘,上限 100GB | 1/5 磁盘,上限 400GB | 1/20 磁盘,上限 100GB | 1/20 磁盘,上限 100GB |
选择建议
OLTP 模板:适用于大多数在线事务处理场景,是默认选择。适合电商、社交、游戏等高并发低延迟应用。
OLAP 模板:适用于数据仓库、BI 报表、ETL 等分析型负载。特点是允许大查询、高并行度、宽松的超时设置。
CRIT 模板:适用于金融交易、核心账务等对数据一致性和安全性有极高要求的场景。强制同步复制、数据校验和、完整审计日志。
TINY 模板:适用于开发测试环境、资源受限的虚拟机、树莓派等场景。最小化资源占用,禁用并行查询。
自定义模板
您可以基于现有模板创建自定义配置模板。模板文件位于 Pigsty 安装目录的 roles/pgsql/templates/ 下:
创建自定义模板的步骤:
- 复制一个现有模板作为基础
- 根据需要修改参数
- 将模板放置在
roles/pgsql/templates/目录 - 在集群定义中通过
pg_conf引用新模板
例如,创建一个名为 myapp.yml 的自定义模板:
然后在集群中使用:
请注意,模板文件使用 Jinja2 模板语法,参数值会根据节点的实际资源(CPU、内存、磁盘)动态计算。
参数优化策略
了解更多关于模板参数优化的技术细节,请参阅 参数优化策略,其中详细介绍了:
- 内存参数调整(共享缓冲区、工作内存、最大连接数)
- CPU 参数调整(并行查询工作进程配置)
- 存储空间参数(WAL 大小、临时文件限制)
- 手工调整参数的方法
相关参数
pg_conf:指定使用的 PostgreSQL 配置模板node_tune:指定使用的操作系统调优模板,应与pg_conf配套pg_rto:恢复时间目标,影响故障切换超时pg_rpo:候选副本落后阈值;设为 0 时通用模板启用同步复制pg_max_conn:覆盖模板的最大连接数pg_shared_buffer_ratio:共享缓冲区占内存比例pg_storage_type:存储类型,影响 IO 相关参数
了解在 Pigsty 中,预置的四种 Patroni 场景化模板所采用的不同参数优化策略
针对在线事务处理负载优化的 PostgreSQL 配置模板
针对在线分析处理负载优化的 PostgreSQL 配置模板
面向一致性优先业务的 PostgreSQL 参数模板,启用严格同步复制、数据校验和详细连接日志。
针对微型实例和资源受限环境优化的 PostgreSQL 配置模板