temp_buffers:控制PostgreSQL用于排序和哈希操作的临时缓冲区的大小。
work_mem:控制每个查询所能使用的内存量,可以用于控制排序和哈希操作的内存使用,类似于MySQL中的join_buffer_size参数。
maintenance_work_mem:控制PostgreSQL在执行诸如VACUUM和CREATE INDEX等操作时所使用的内存量。
不好的影响
内存不足:如果将缓存参数设置得太大,可能会占用系统可用内存的大部分或全部,导致系统变慢或崩溃。
磁盘I/O压力过大:如果将缓存参数设置得太大,可能会导致PostgreSQL缓存不必要的数据,从而增加磁盘I/O操作的数量,降低系统性能。
延迟变高:如果将缓存参数设置得太大,可能会导致PostgreSQL花费过多时间在缓存操作上,从而增加查询延迟。
建议
shared_buffers设置为物理内存的10-25%左右,work_mem设置为单个查询可用内存的1-2%,temp_buffers设置为1-2MB,maintenance_work_mem设置为物理内存的1-2%。
例如,如果系统具有16GB的物理内存,则可以将shared_buffers设置为2-4GB,work_mem设置为128-256MB,temp_buffers设置为1-2MB,maintenance_work_mem设置为128-256MB。
默认值:
shared_buffers:默认值是128MB。
work_mem:默认值是4MB。
temp_buffers:默认值是8MB。
maintenance_work_mem:默认值是64MB。
系统可用内存通常指的是物理内存,即安装在计算机中的硬件内存。在PostgreSQL中,许多缓存参数(如shared_buffers、work_mem和maintenance_work_mem等)都是使用物理内存进行分配和管理的。
shared_buffers:3G。
work_mem:0.5G。
temp_buffers:0.5G。
maintenance_work_mem:0.5G
其他记录
1.在服务器执行 find / -name postgresql.conf 找到pg数据库配置文件的位置
2.修改完成后,用 su - postgres 切换用户
3.执行 pg_ctl reload 重新加载配置文件