硬件和系统配置

操作系统 Ubuntu13.04
系统位数 64
CPU Intel(R) Core(TM)2 Duo CPU
内存 4G
硬盘 Seagate ST2000DM001-1CH164
测试工具 PostgreSQL-9.1.11

测试工具

工具名称 pgbench
数据量 200W(整个数据库大小约为300M)
模拟客户端数 4
线程数 4
测试时间 60秒
  • 准备命令:pgbench -i -s 20 pgbenchdb
  • 测试命令:pgbench -r -j4 -c4 -T60 testdb

配置文件

默认的配置配置文件是保存在/etc/postgresql/VERSION/main目录下的postgresql.conf文件

  • 如果想查看参数修改是否生效,可以用psql连接到数据库后,用<show 选项名> 来查看。
  • 如果要修改shared_buffers, 在ubuntu下可能需要执行命令<sysctl -w>Managing Kernel Resources

主要选项

选项 默认值 说明 是否优化 原因
max_connections 100 允许客户端连接的最大数目 因为在测试的过程中,100个连接已经足够
fsync on 强制把数据同步更新到磁盘 因为系统的IO压力很大,为了更好的测试其他配置的影响,把改参数改为off
shared_buffers 24MB 决定有多少内存可以被PostgreSQL用于缓存数据(推荐内存的1/4) 在IO压力很大的情况下,提高该值可以减少IO
work_mem 1MB 使内部排序和一些复杂的查询都在这个buffer中完成 有助提高排序等操作的速度,并且减低IO
effective_cache_size 128MB 优化器假设一个查询可以用的最大内存,和shared_buffers无关(推荐内存的1/2) 设置稍大,优化器更倾向使用索引扫描而不是顺序扫描
maintenance_work_mem 16MB 这里定义的内存只是被VACUUM等耗费资源较多的命令调用时使用 把该值调大,能加快命令的执行
wal_buffer 768kB 日志缓存区的大小 可以降低IO,如果遇上比较多的并发短事务,应该和commit_delay一起用
checkpoint_segments 3 设置wal log的最大数量数(一个log的大小为16M) 默认的48M的缓存是一个严重的瓶颈,基本上都要设置为10以上
checkpoint_completion_target 0.5 表示checkpoint的完成时间要在两个checkpoint间隔时间的N%内完成 能降低平均写入的开销
commit_delay 0 事务提交后,日志写到wal log上到wal_buffer写入到磁盘的时间间隔。需要配合commit_sibling 能够一次写入多个事务,减少IO,提高性能
commit_siblings 5 设置触发commit_delay的并发事务数,根据并发事务多少来配置 减少IO,提高性能

测试数据

  • 测试的数据是运行3次,取平均值。
  • 关闭fsync是为了更好的体现出其他参数对PostgreSQL的影响。
参数 修改值 事务总数 tps(包括建立连接) tps(不包括建立连接)
默认设置   8464 140.999792 141.016182
fsync off 92571 1479.969755 1480.163355
shared_buffers 1GB 100055 1635.759275 1635.977823
work_mem 10MB 101209 1665.804812 1666.04082
effective_cache_size 2GB 98209 1636.733152 1636.970271
maintenance_work_mem 512MB 92930 1548.029233 1548.223108
checkpoint_segments 32 195982 3265.995 3266.471064
checkpoint_completion_target 0.9 194390 3239.406493 3239.842596
wal_buffer 8MB 198639 3310.241458 3310.724067
恢复fsync off 11157 185.883542 185.909849
commit_delay && commit_siblings 10 && 4 11229 187.103538 187.131747

总结

  事务总数 tps(包括建立连接) tps(不包括建立连接)
优化前 8464 140.999792 141.016182
优化后(fsync=on) 11229 187.103538 187.131747
优化后(fsync=off) 198639 3310.241458 3310.724067

在fsync打开的情况下,优化后性能能够提升30%左右。因为有部分优化选项在默认的SQL测试语句中没有体现出它的优势,如果到实际测试中,提升应该不止30%。 测试的过程中,主要的瓶颈就在系统的IO,如果需要减少IO的负荷,最直接的方法就是把fsync关闭,但是这样就会在掉电的情况下,可能会丢失部分数据。

原文链接:http://blog.csdn.net/kyle__shaw/article/details/17576259

PostgreSQL配置优化的更多相关文章

  1. postgresql 配置文件优化

    postgresql 配置文件优化 配置文件 默认的配置配置文件是保存在/etc/postgresql/VERSION/main目录下的postgresql.conf文件 如果想查看参数修改是否生效, ...

  2. 【Git】 GitLab配置优化及汉化

    GitLab配置 1.修改GitLab绑定的域名 a.修改/etc/gitlab/gitlab.rb配置文件,修改成自己的域名 external_url 'http://gitlab.example. ...

  3. linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):

    Postgresql配置及osm2pgsql原始数据导入 2012年,Ubuntu 12.04LTS发布,又一个长效支持版,我们又该更新OpenStreetMap服务器了,这次,将详细在博客中记录配置 ...

  4. VS2010/2012配置优化记录笔记

    VS2010/2012配置优化记录笔记 在某些情况下VS2010/2012运行真的实在是太卡了,有什么办法可以提高速度吗?下面介绍几个优化策略,感兴趣的朋友可以参考下,希望可以帮助到你   有的时候V ...

  5. PHPSTORM/IntelliJ IDEA 常用 设置配置优化

    PHPSTORM/IntelliJ IDEA 常用 设置配置优化 - meetrice 时间 2014-09-06 10:17:00  博客园-所有随笔区 原文  http://www.cnblogs ...

  6. nginx 配置优化的几个参数

    nginx 配置优化的几个参数 2011-04-22 本文地址: http://blog.phpbean.com/a.cn/7/ --水平有限欢迎指正-- -- 最近在服务器上搞了一些nginx 研究 ...

  7. hadoop配置优化

    yarn-site.xml <property> <name>yarn.nodemanager.resource.memory-mb</name> <valu ...

  8. apache配置优化

    最近参加了很多面试,多多少少有点小感悟,可以说观念转变了不少,特别是对于作为一个开发人员的定位,原来只是认为开发人员就只需要写好代码就行了,所以只需要有数据结构,算法,设计模式,重构方面的知识就行了. ...

  9. mysql配置优化

    [笔记]MySQL 配置优化   安装MySQL后,配置文件my.cnf在 /MySQL安装目录/share/mysql目录中,该目录中还包含多个配置文件可供参考,有my-large.cnf ,my- ...

随机推荐

  1. 【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】

    一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...

  2. 联想笔记本如何开启笔记本的VT-x虚拟化技术功能

    虚拟化技术支持,需几个方面的条件支持:芯片组自身支持.BIOS提供支持.处理器自身支持.操作系统支持. 操作系统方面,主流操作系统均支持VMM管理,因此无需考虑. 而芯片组方面,从Intel 945( ...

  3. Conditional project or library reference in Visual Studio

    Conditional project or library reference in Visual Studio In case you were wondering why you haven’t ...

  4. Power BI入门教程

    题记:这篇文章不仅是Power BI的入门教程,同时相对于Qlik Sense进行了简单比较. 最近把一个Qlik Sense的示例应用手动转成了Power BI的应用,把相关步骤和遇到的问题记录如下 ...

  5. java内存模型(待完善)

    JMM 1.内存模型的抽象. 本地内存是JMM的一个抽象概念,并不是真实存在,它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化. 2.内存可见性问题? ? 3.重排序  编译器优化重排序   ...

  6. Android获取ImageView上的图片,和一个有可能遇到的问题!

    1.在获取图片前先调用setDrawingCacheEnabled(true)这个方法: 举例:mImageView.setDrawingCacheEnabled(true); 2.之后可以通过get ...

  7. selenium使用Xpath定位之完整篇

    其中有一片文章提到了xpath元素定位,但是该文章中有些并不能适应一些特殊与个性化的场景.在文本中提供xpath元素的定位终极篇,你一定能在这里找到你需要的解决办法. 第一种方法: 通过绝对路径做定位 ...

  8. 我理想中的父母(The Ideal Parents In My Heart)

    Parents are the first teachers in children's life, and people all know the great importance exactly ...

  9. maven执行报错resolution will not be reattempted until the update interval of nexus h

    maven在执行过程中抛错: 引用 ... was cached in the local repository, resolution will not be reattempted until t ...

  10. asp.net 字符串替换、截取和从字符串中最后某个字符 开始截取

    有时候要在一段字符串里面把某些字符替换成其他字符,怎么办? 例如: string image=@"csks/news/user_top/qqqq/qqqq.jpg"; image ...