默认配置模板的参数优化策略说明
了解在 Pigsty 中,预置的四种 Patroni 场景化模板所采用的不同参数优化策略
Pigsty provides four preset Patroni/PostgreSQL config templates optimized for different workloads:
| Template | CPU Cores | Use Case | Characteristics |
|---|---|---|---|
oltp.yml | 4-128C | OLTP transactions | High concurrency, low latency |
olap.yml | 4-128C | OLAP analytics | Large queries, high parallelism |
crit.yml | 4-128C | Critical/Finance | Data safety, audit, zero-loss |
tiny.yml | 1-3C | Tiny instances | Resource-constrained envs |
Use pg_conf to select a template; default is oltp.yml.
The database tuning template
pg_confshould be paired with the OS tuning templatenode_tune.
Set pg_conf in your cluster definition.
It’s recommended to set node_tune accordingly for OS-level tuning:
pg-test:
hosts:
10.10.10.11: { pg_seq: 1, pg_role: primary }
10.10.10.12: { pg_seq: 2, pg_role: replica }
vars:
pg_cluster: pg-test
pg_conf: oltp.yml # PostgreSQL config template (default)
node_tune: oltp # OS tuning template (default)
For critical financial workloads, use crit.yml:
pg-finance:
hosts:
10.10.10.21: { pg_seq: 1, pg_role: primary }
10.10.10.22: { pg_seq: 2, pg_role: replica }
10.10.10.23: { pg_seq: 3, pg_role: replica }
vars:
pg_cluster: pg-finance
pg_conf: crit.yml # PostgreSQL critical template
node_tune: crit # OS critical tuning
For low-spec VMs or dev environments, use tiny.yml:
pg-dev:
hosts:
10.10.10.31: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-dev
pg_conf: tiny.yml # PostgreSQL tiny template
node_tune: tiny # OS tiny tuning
The four templates differ significantly in key parameters:
| Parameter | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| max_connections | 500/1000 | 500 | 500/1000 | 250 |
| work_mem range | 64MB-1GB | 64MB-8GB | 64MB-1GB | 16MB-256MB |
| maintenance_work_mem | 25% shmem | 50% shmem | 25% shmem | 25% shmem |
| max_locks_per_transaction | 1-2x maxconn | 2-4x maxconn | 1-2x maxconn | 1-2x maxconn |
| Parameter | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| max_worker_processes | cpu+8 | cpu+12 | cpu+8 | cpu+4 |
| max_parallel_workers | 50% cpu | 80% cpu | 50% cpu | 50% cpu |
| max_parallel_workers_per_gather | 20% cpu (max 8) | 50% cpu | 0 (off) | 0 (off) |
| parallel_setup_cost | 2000 | 1000 | 2000 | 1000 |
| parallel_tuple_cost | 0.2 | 0.1 | 0.2 | 0.1 |
| Parameter | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| synchronous_mode | depends pg_rpo | depends pg_rpo | forced on | depends pg_rpo |
| data_checksums | optional | optional | forced on | optional |
| Parameter | 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 |
| Parameter | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| idle_in_transaction_session_timeout | 10min | off | 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 | auth | auth | full | default |
| Parameter | OLTP | OLAP | CRIT | TINY |
|---|---|---|---|---|
| io_workers | 25% cpu (4-16) | 50% cpu (4-32) | 25% cpu (4-8) | 3 |
| temp_file_limit | 1/20 disk | 1/5 disk | 1/20 disk | 1/20 disk |
OLTP Template: Default choice for most transaction processing. Ideal for e-commerce, social, gaming apps.
OLAP Template: For data warehouses, BI reports, ETL. Allows large queries, high parallelism, relaxed timeouts.
CRIT Template: For financial transactions, core accounting with strict consistency/security requirements. Forced sync replication, checksums, full audit.
TINY Template: For dev/test environments, resource-constrained VMs, Raspberry Pi. Minimizes resource usage, disables parallel queries.
Create custom templates based on existing ones. Templates are in roles/pgsql/templates/:
roles/pgsql/templates/
├── oltp.yml # OLTP template (default)
├── olap.yml # OLAP template
├── crit.yml # CRIT critical template
└── tiny.yml # TINY micro template
Steps to create a custom template:
roles/pgsql/templates/pg_confExample:
cp roles/pgsql/templates/oltp.yml roles/pgsql/templates/myapp.yml
# Edit myapp.yml as needed
Then use in your cluster:
pg-myapp:
vars:
pg_conf: myapp.yml
Templates use Jinja2 syntax; parameters are dynamically computed based on node resources (CPU, memory, disk).
For technical details on template parameter optimization, see Tuning Strategy:
pg_conf: PostgreSQL config templatenode_tune: OS tuning template, should match pg_confpg_rto: Recovery time objective, affects failover timeoutpg_rpo: Recovery point objective, affects sync replicationpg_max_conn: Override template max connectionspg_shared_buffer_ratio: Shared buffer memory ratiopg_storage_type: Storage type, affects IO params了解在 Pigsty 中,预置的四种 Patroni 场景化模板所采用的不同参数优化策略
PostgreSQL config template optimized for online transaction processing workloads
PostgreSQL config template optimized for online analytical processing workloads
PostgreSQL config template optimized for critical/financial workloads with data safety and audit compliance
PostgreSQL config template optimized for micro instances and resource-constrained environments
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.