max_connections
系统支持的最大连接数
shared_buffers
共享缓冲区大小,建议为服务器内总的1/4大小
effective_cache_size
postgresql能使用的最大缓存,会被优化器用于使用索引的成本考量,值越大使用索引扫描的可能性越大,反之使用表扫描的可能性越大,建议为服务器总内存的3/4
maintenance_work_mem
维护工作内存大小,用于执行vacuum、create index任务,建议为1GB到2GB
checkpoint_completion_target
控制脏页刷新进度,范围为0到1之间,值越大后台checkpoint进程休眠机会越大
wal_buffers
wal log 缓冲区大小
temp_buffers
每个数据库会话使用的临时缓冲区内存的最大数量,不要设置的过大
work_mem
用于排序工作的内存大小,该值为单个会话的限制,不要设置的过大
min_wal_size
wal log 保留最小大小
max_wal_size
wal log 保留的最大大小
max_worker_processes
系统支持的最大后台进程数,不要超过cpu核心数
max_parallel_workers_per_gather
系统允许启用的最大并行进程数
max_parallel_workers
系统支持的最大并行进程数,不要超过cpu核心数
max_parallel_maintenance_workers
CREATE INDEX并行工作的最大进程数
wal_level
minimal:默认值,最小化日志记录
replica:增加wal归档需要的日志,用于wal归档和流复制
logical:用于逻辑复制
archive_mode
off:关闭归档模式
on:启用归档模式
always:流复制备库启用归档
archive_timeout
用于强制切换wal log 文件的超时值
synchronous_commit
local:事务提交时需要等待本地wal log 写入硬盘后才返回给客户端,对性能有一定的损失,安全性高
on:事务提交时需要等待本地wal log 写入硬盘后才返回给客户端,当为流复制模式时,事务提交也需等待备库wal log 写入硬盘才返回给客户端
remote_write:流复制模式主库提交事务时需等待本地wal log 写入硬盘,备库wal log写入操作系统缓存后才返回给客户端
remote_apply:流复制模式主库提交事务时需等待本地wal log 写入硬盘,备库wal log 写入硬盘应用完成后才返回给客户端
off:事务提交不用等待wal log 持久化即返回给客户端,性能最好,但有数据丢失的风险
hot_standby_feedback
off:关闭查询冲突反馈
on:用于流复制模式备库反馈由于主库产生排他锁传递至备库、主库vacuum清理无用元组导致查询冲突,有利于减少备库查询冲突
wal_log_hint
on:记录wal log 提示页面,用于pg_rewind 工具修复流复制模式发生failover后的主备关系