Postgresql性能优化 (一)

公司里面新买了两台服务器,用pgpool做同步。
postgresql用8.4版本,请了外面的公司做性能优化。
结果也就只是调整postgresql.conf文件里面参数而已。
服务器是36G内存,Dual Xeon 4核CPU装了2个。

优化分了三个部分的内容:查询类,更新类,管理类

查询类:work_mem参数

    该参数是postgresql每个进程可以使用的工作内存空间。如果进程需要的容量超过了这个范围,就要把处理内容输出到临时文件里,相当于OS的swap处理。
    查询时如果用到了排序,哈希关联,bitmap检索等方式的话,就要分别利用work_mem的内存空间。也就是一个SQL语句可能会同时使用多个工作内存空间,而不是共用一个。
    设置这个参数的时候,就要考虑到同时连接数以及每个连接平均使用的内存空间数。总内存数减去 (同时连接数”平均使用数的总和),剩下的才是OS和postgresql可以利用的缓存。(参考值,不是绝对值) 设置的太大的话,反倒会引起OS的swap,影响性能。
 
  正确设置work_mem的方法如下:
  1) psql连接数据库
  2)database=# set client_min_messages='LOG';
  3) database=# set log_temp_files = 0; //显示所有使用临时文件的日志
  4) 执行比较慢的SQL语句
  5) 如果显示了类似下列的日志的话,就要加大work_mem的值,然后重复第五步
     LOG: temporary file: path "base/pgsql_tmp/pgsql_tmp27660.1568", size 88155700
 
  修改这个参数不用重启数据库,reload一下就可以了。
  最好先执行一下SQL语句,把需要的资源全部放到缓存里,然后再调试,可以排除IO的影响。

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

转载于:http://blog.itpub.net/378235/viewspace-680600/

你可能感兴趣的:(Postgresql性能优化 (一))