ITPub博客

首页 > Linux操作系统 > Linux操作系统 > postgresql数据库重要参数说明

postgresql数据库重要参数说明

原创 Linux操作系统 作者:datapeng 时间:2016-08-18 16:37:22 0 删除 编辑

postgresql重要参数说明
shared_buffers:
这是最重要的参数,相当于oracle的db_cache_size,postgresql通过shared_buffers和内核和磁盘打交道,因此应该尽量大,让更多的数据缓存在shared_buffers中。此参数设置的是按块为单位的,1表示8k,可以考虑设置到物理内存的40%
work_mem:
这是重要的参数,相当于oracle的pga,但与pga有差别,work_mem是每个会话独自使用的大小,计算评估其大小时,max_connections*work_mem与pga的排序区是相当的。在pgsql8.0之前叫做sort_mem。postgresql在执行排序操作时,会根据work_mem的大小决定是否将一个大的结果集拆分为几个小的和work_mem查不多大小的临时文件。显然拆分的结果是降低了排序的速度。因此增加work_mem有助于提高排序的速度。根据需要排序结果集的大小而定,单位是KB,比如81920(80M)
effective_cache_size:
这个参数相当于oracle自动存储管理的max_memory,是postgresql能够使用的最大缓存,这个数字对于独立的pgsql服务器而言应该足够大,可以设置到物理内存的80%左右。
maintenance_work_mem:
这里定义的内存只是在CREATE INDEX, VACUUM等时用到,因此用到的频率不高,但是往往这些指令消耗比较多的资源,因此应该尽快让这些指令快速执行完毕。可以考虑一般值即可,如有大的调整,临时调整
max_connections:
通常,max_connections的目的是防止max_connections *work_mem超出了实际内存大小。比如,如果将work_mem设置为实际内存的2%大小,则在极端情况下,如果有50个查询都有排序要求,而且都使用2%的内存,则会导致swap的产生,系统性能就会大大降低。当然,如果有4G的内存,同时出现50个如此大的查询的几率应该是很小的。
temp_buffers:
称之为临时缓冲区,用于数据库会话访问临时表数据,系统默认值为8M。可以在单独的session中对该参数进行设置,尤其是需要访问比较大的临时表时,将会有显著的性能提升。

最后大家要清楚一点:
max_connections*work_mem+shared_buffers+temp_buffers+maintenance_work_mem+操作系统所需内存不能够超过整个的RAM大小,这是非常重要的。
所以,我们在分配内存时,一定要注意。操作系统的保留内存,pgsql使用的最大内存不要过大。根据内存的情况,如果是8G以上的话,一般在85%左右。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29371470/viewspace-2123681/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-12-06

  • 博文量
    228
  • 访问量
    2684253