Ubuntu下PostgreSQL内存管理策略主要通过调整核心参数实现,以下是关键配置及建议:
- 共享缓冲区(shared_buffers):设置为系统物理内存的25%-40%,用于缓存表和索引数据,提升查询效率。
- 工作内存(work_mem):控制排序、哈希等操作的内存,建议设置为64MB-256MB,复杂查询可适当提高。
- 维护内存(maintenance_work_mem):用于VACUUM、CREATE INDEX等维护操作,建议设置为512MB-数GB,大表操作可增大。
- 有效缓存大小(effective_cache_size):估计操作系统文件系统缓存,设置为物理内存的50%-75%,帮助优化查询计划。
- WAL缓冲区(wal_buffers):默认16MB,可适当调整(如设置为shared_buffers的1/32),优化日志写入性能。
- 大页面(Huge Pages):启用可减少内存碎片,需在系统内核参数中设置
vm.nr_hugepages,并在PostgreSQL中启用huge_pages。 - 内核参数优化:调整
vm.swappiness(建议设为1,减少交换)、vm.overcommit_memory(设为2,避免OOM)。
操作步骤:
- 编辑配置文件
/etc/postgresql/[版本]/main/postgresql.conf,修改上述参数。 - 重启PostgreSQL服务:
sudo systemctl restart postgresql。 - 使用
pg_stat_activity、top等工具监控内存使用,逐步调整至最优。
注:参数需根据服务器内存大小、并发负载及查询复杂度调整,避免过度分配导致系统不稳定。