use*_*922 7 postgresql performance
我没有看到 Postgres 写入性能的提高,我认为我会使用单个 SSD 与 (16) 15k RPM SAS 驱动器的硬件 RAID 10 阵列。
我有一个戴尔 R820,带有 PERC H700 硬件 RAID 卡和 RAID 10 阵列中的 16 个 15k RPM SAS 驱动器,以及一个 800GB 的 Intel s3700 SSD。该服务器具有 128GB 的 RAM 和 64 核的 Xeon E5-4640,频率为 2.40GHz,运行 CentOS 6.4 和 Postgres 9.2.4。
我正在使用 pgbench 将 RAID 10 阵列中的 SAS 驱动器与单个 SSD 进行比较。
15k RPM SAS RAID 10 结果
pgbench -U postgres -p 5432 -T 50 -c 10 pgbench 开始真空……结束。 交易类型:TPC-B(有点) 比例因子:1 查询方式:简单 客户数量:10 线程数:1 持续时间:50 秒 实际处理的交易数量:90992 tps = 1819.625430(包括连接建立) tps = 1821.417384(不包括连接建立)
单个 Intel s3700 SSD 结果
pgbench -U postgres -p 5444 -T 50 -c 10 pgbench 开始真空……结束。 交易类型:TPC-B(有点) 比例因子:1 查询方式:简单 客户数量:10 线程数:1 持续时间:50 秒 实际处理的交易数量:140597 tps = 2811.687286(包括连接建立) tps = 2814.578386(不包括连接建立)
在实际使用中,我们有一个非常密集的写入过程,大约需要 7 分钟才能完成,而 RAID 10 阵列和 SSD 之间的时间相差在 10 或 15 秒之内。
我期望 SSD 的性能要好得多。
以下是 SSD 的 Bonnie++ 结果:
版本 1.96 ------顺序输出------ --顺序输入- --随机-
并发 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
机器尺寸 K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
openlink2.rady 252G 532 99 375323 97 183855 45 1938 99 478149 54 +++++ +++
延迟 33382us 82425us 168ms 12966us 10879us 10208us
版本 1.96 ------顺序创建------ --------随机创建--------
openlink2.radyn.com -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
文件 /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 5541 46 +++++ +++ +++++ +++ 18407 99 +++++ +++ +++++ +++
延迟 1271us 1055us 1157us 456us 20us 408us
以下是 RAID 10 15k RPM 驱动器的 Bonnie++ 结果:
版本 1.96 ------顺序输出------ --顺序输入- --随机-
并发 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
机器尺寸 K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
openlink2.rady 252G 460 99 455060 98 309526 56 2156 94 667844 70 197.9 85
延迟 37811us 62175us 393ms 75392us 169ms 17633us
版本 1.96 ------顺序创建------ --------随机创建--------
openlink2.radyn.com -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
文件 /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 12045 95 +++++ +++ +++++ +++ 16851 98 +++++ +++ +++++ +++
延迟 7879us 504us 555us 449us 24us 377us
以下是 SSD 的 dd 结果:
dd if=/dev/zero of=/path/on/ssd bs=1M count=4096 conv=fdatasync,notrunc 已复制 4294967296 字节 (4.3 GB),12.7438 秒,337 MB/秒
以下是 RAID 10 15k RPM 驱动器的 dd 结果:
dd if=/dev/zero of=/path/on/array bs=1M count=4096 conv=fdatasync,notrunc 已复制 4294967296 字节 (4.3 GB),8.45972 秒,508 MB/秒
我会发布 Postgres 配置,但很明显 SSD 的性能并不优于 RAID 10 阵列,因此它似乎不适用。
那么 SSD 的性能是否正常?
或者,具有 16 个快速驱动器的 RAID 10 是否如此出色以至于它的性能优于单个 SSD? SSD 的 RAID 10 阵列会很棒,但是每个 2,000 美元,8,000 美元的价格标签很难证明是合理的(除非我们肯定会看到我们希望在现实世界中获得 2 到 5 倍的性能提升)。
================ 更新 ================
事实证明,阵列中有 16 个 SAS 驱动器,而不是 8 个。我认为组合吞吐量是
以下是 iozone 基准测试,可以提供更多信息。RAID10 阵列始终如一地产生更好的结果。RAID 10 中的 4 或 8 个 SSD 可能会击败 SAS 阵列(当然价格高昂)。
SSD 基准测试http://pastebin.com/vEMHCQhR
16 驱动器 RAID-10 基准测试http://pastebin.com/LQNrm7tT
这是 SSD 的 Postgres 配置,以防有人看到任何改进空间以利用 SSD http://pastebin.com/Qsb3Ks7Y
Mar*_*ian 10
我不确定这本身是否是一个问题,因为正如您所看到的,在许多测试中,单个 SSD 驱动器的性能可以胜过 8 磁盘 RAID 10 设置。
几乎所有的测试都表明单个 SSD 驱动器的速度更快:
在单一情况下,SSD 表现优异,那就是顺序写入。我想说的是,这对于批处理来说是最常见的,而不是对于 OLTP 风格的负载。因此,如果您主要进行此类写入,那么现在单个 SSD 可能不是您的解决方案。
而且我们不是在谈论Fusion-IO驱动器(我怀疑它可能会给您带来您期望的下一个级别,但价格上一个级别)。
从多年来不得不使用蹩脚存储的 DBA 的角度来看,这是一个相当大的技术进步,它们似乎工作正常,但也许我的期望太低了。
我希望您的 SSD 在使用更多线程和更高并发性测试基准方面有更多改进,因为这是 SSD 的亮点。所以,如果你可以用重复测试的方式更多的客户和更多的线程,我很好奇关于比较结果。
几种可能性: