1. 核心内存参数配置
echo "shared_buffers = 4GB" >> /var/lib/pgsql/data/postgresql.conf
sudo systemctl restart postgresql
ORDER BY、GROUP BY)。需根据查询复杂度调整,建议设置为64MB-1GB(单个操作),且work_mem * max_connections需小于系统总内存(避免内存溢出)。配置示例如下:echo "work_mem = 64MB" >> /var/lib/pgsql/data/postgresql.conf
VACUUM、CREATE INDEX、ALTER TABLE),建议设置为512MB-1GB(比work_mem大,提升维护效率)。配置示例如下:echo "maintenance_work_mem = 512MB" >> /var/lib/pgsql/data/postgresql.conf
echo "effective_cache_size = 6GB" >> /var/lib/pgsql/data/postgresql.conf
echo "wal_buffers = 16MB" >> /var/lib/pgsql/data/postgresql.conf
2. 操作系统内核参数优化
/etc/sysctl.conf,添加vm.overcommit_memory = 2(禁止系统超额分配内存,防止PostgreSQL因内存不足崩溃),然后执行sysctl -p使配置生效。vm.swappiness(默认60,建议设为10-20),减少系统将内存换页到磁盘的频率,提升内存访问效率。配置示例如下:echo "vm.swappiness = 10" >> /etc/sysctl.conf
sysctl -p
3. 并行处理与WAL优化
echo "max_parallel_workers_per_gather = 2" >> /var/lib/pgsql/data/postgresql.conf
echo "checkpoint_completion_target = 0.7" >> /var/lib/pgsql/data/postgresql.conf
4. 监控与调优流程
top、htop、free -m查看系统内存占用,通过PostgreSQL内置视图pg_stat_activity、pg_stat_bgwriter监控内存使用情况(如work_mem是否溢出、shared_buffers命中率)。work_mem、max_parallel_workers_per_gather;OLAP场景侧重shared_buffers、effective_cache_size。