Linux下优化PostgreSQL性能可从硬件、系统配置、数据库参数、查询优化及维护等方面入手,具体如下:
硬件优化
系统配置优化
vm.swappiness减少内存换页,增加文件描述符上限。atime更新,选择高效IO调度器(如Deadline)。数据库参数调优
shared_buffers:设置为物理内存的25%-40%,缓存数据页。work_mem:根据查询复杂度设置(如32MB-100MB),提升排序/哈希性能。maintenance_work_mem:增大至1GB以上,加速索引创建和VACUUM。max_connections:通过连接池(如PgBouncer)控制,避免过多连接。effective_cache_size:设置为物理内存的50%-75%,辅助查询规划器。checkpoint_completion_target接近1,平滑写入压力。索引优化
REINDEX重建碎片化索引,通过pg_stat_user_indexes清理无用索引。查询优化
EXPLAIN/ANALYZE分析执行计划。SELECT *,用JOIN替代子查询,避免IN嵌套。维护与监控
VACUUM和ANALYZE,清理死元组并更新统计信息。pg_stat_statements、Prometheus+Grafana跟踪慢查询和性能指标。其他策略
max_parallel_workers_per_gather,利用多核加速大表操作。huge_pages提升内存分配效率。注意:优化前需在测试环境验证,根据实际负载调整参数,避免过度优化[1,2,3,4,5,6,7,8,9,10,11]。