MongoDB1.6版本与最新1.8版本性能测试——写入篇

本文转自淘宝数据库技术团队博客。对MongoDB最新的稳定版1.8版本和上个稳定版本1.6版本做了写入性能的测试对比。从测试来看,1.8版本对性能的改进还是卓有成效的。

原文链接:http://goo.gl/y0OES

在MongoDB 1.6.4的使用过程中,我们发现当文件系统cache用尽的时候MongoDB的写入性能会有非常大的波动。更为致命的是,偶尔还会发生持续20-30秒的写入阻塞。虽然MongoDB的设计非常先进,但是稳定性一直是我们头痛的一个问题。带着疑问我们参加了Mongo北京开发者聚会,会上10gen的工程师Alvin Richards建议测试一下MongoDB 1.8,据说在写锁上有所改进。
回到杭州后,我们在Redhat 6.0上重做了MongoDB 1.6.4和1.8.0-rc0的对比测试。测试的结果如下图所示:

这两张图的横坐标是时间轴(每个点代表10秒钟),纵坐标是插入速度(代表10秒内的平均速度)。
测试逻辑如下:

  1. 在zyy库下建立一个名为test的collection
  2. 在test的k字段上建立索引
  3. 开启测试程序并打点。该测试程序将开启10个线程对test进行并发写入。k由uuid调用生成,长度为37字节;v长度为1k。

从测试结果上看,MongoDB 1.8.0相对于1.6.4在写入性能上有所改进。首先,1.6.4除了预分配文件造成性能下降外,写入性能偶尔还会长时间降到0。而1.8.0基本没有出现写入性能降到0的情况,性能的最低点在于预分配文件。其次,从性能的稳定性上看,1.8.0的波动显然没有1.6.4那么夸张。在InnoDB做的类似测试也会出现类似波动,但是性能最低点不会降到MongoDB那么低。

总体而言,MongoDB 1.8.0-rc从功能和性能上都有所改进。期待release版本和新的存储引擎中。

具体测试代码见此:

http://pastie.org/1645946

anyShare一切看了好文章不转的行为,都是耍流氓!
          

无觅相关文章插件,快速提升流量