#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 會顯著增加日志量,生產環境建議僅在調試時開啟。