24MB shared_buffers设置是保守的默认设置,对于具有16GB RAM的专用数据库,它的设置需要高很多。但是,是的,您必须重新启动服务器以调整其大小。http://wiki.postgresql.org/wiki/Performance_Optimization是开始获得性能配置准则的好地方。将shared_buffers设置为4GB或6GB似乎更合理。
请注意,在Linux上,您需要调整kernel.shmmax sysctl设置(在/etc/sysctl.conf中,或者仅通过编写/ proc / sys / kernel / shmmax)来分配大量共享内存的块。如果不这样做,将会出现错误,指出请求的数量,您必须将kernel.shmmax设置得更高。
由于您有很多内存,因此您可能还考虑将默认的work_mem设置得更高,这样会使诸如排序和散列(组/顺序/区别等)之类的事情倾向于在内存中工作,而不是使用临时文件。您无需重新启动服务器即可执行此操作,只需更新配置文件,重新加载服务即可,新会话将获得新设置。会话的默认工作内存为1MB,您可以计算一次可以使用的最大内存,work_mem * max_client_connections并估算将产生的影响。
您还应该增加effective_cache_size,以向计划者表明,内核FS层可能正在PostgreSQL共享缓冲区之外的内存中缓存很多页面。
等等。希望这能使您有个良好的开端。