postgresql 常用参数配置
#01 - Connection-Authentication
优化点:
listen_addresses = '0.0.0.0'
建议:生产环境应限制为具体IP(如 '192.168.1.0/24,127.0.0.1'),避免暴露到公网。
ssl = off
建议:启用SSL(ssl = on),配置证书提升安全性。
superuser_reserved_connections = 10
建议:降低至 3,避免普通连接不足。
#02 - Memory-Resource
关键调整:
shared_buffers = 1GB
建议:设为物理内存的 25%-30%(若总内存≥8GB,可设为 4GB)。
work_mem = 5592kB
建议:根据并发调整(如 4MB),公式参考:work_mem = (总内存 - shared_buffers) / (max_connections * 2)。
effective_cache_size = 3GB
建议:设为物理内存的 50%-75%(若总内存≥8GB,建议 6GB)。
huge_pages = try
建议:若系统支持且内存>64GB,设为 on 提升性能。
#03 - WAL-Checkpoint-Archiving
优化点:
synchronous_commit = off
风险:可能丢失少量事务。若需高持久性,设为 on 或 remote_apply(集群场景)。
wal_buffers = 16MB
建议:通常设为 shared_buffers 的 1/32(若 shared_buffers=4GB,设为 128MB)。
archive_command
验证:确保 /postgresql/log/archive/ 路径存在且权限正确,建议添加错误重试逻辑(如 cp %p ... || exit 1)。
#04 - Replication
优化点:
max_wal_senders = 32
建议:根据实际从库数量调整,通常 主库数 + 2。
track_commit_timestamp = on
用途:若需逻辑复制(如CDC),保持开启;否则关闭以减少开销。
#05 - Reporting-Logging
关键调整:
log_min_duration_statement = 1000
建议:设为 100ms 以捕获更多慢查询。
log_statement = 'ddl'
建议:若需审计所有操作,设为 all;否则保持默认。
日志存储:确保 /postgresql/log/pg_log 路径有足够空间,建议日志定期清理或归档。
#06 - QueryTuning-Statistics-Autovacuum
优化点:
autovacuum_max_workers = 5
建议:若表多或写入频繁,可增至 6-8。
autovacuum_vacuum_scale_factor = 0.2
建议:添加此参数,替代默认的 0.2(更积极清理:autovacuum_vacuum_scale_factor = 0.05)。
maintenance_work_mem = 256MB
建议:设为 1GB 以加速VACUUM和索引创建。
#07 - Lock
优化点:
deadlock_timeout = 5s
建议:保持默认 1s,避免长锁等待。
#08 - Client Connection
无需调整:时区、本地化设置合理。
#09 - pg_stat_statements-auto_explain
优化点:
auto_explain.log_min_duration = 10s
建议:设为 1s 以捕获更多执行计划。
注意:auto_explain.log_analyze = true 会显著增加日志量,生产环境建议仅在调试时开启。