版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/50358711
MongoDB 3.2版WiredTiger存储引擎性能测试
作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs
MongoDB 3.2于最近发布了,它使用WiredTiger作为其默认的存储引擎。这五年来,MongoDB从诞生到流行,发展可谓是相当迅猛。
MongoDB 3.0就开始支持“可插拔的存储引擎”功能,因此在3.2版使用WiredTiger也在情理之中。WiredTiger引擎基于B-Tree算法,B-tree即多路搜索树,非二叉树,是一种常见的数据结构,使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。B是Balance的简称,B-Tree数据结构一般用于数据库的索引,综合效率较高。
以B-Tree算法为基础的WiredTiger引擎的执行性能应优于针对IO优化的RocksDB和PerconaFT,但是WiredTiger 3.0引擎存在IO性能衰减问题。有报道说,WiredTiger 3.2引擎的性能在3.0版的基础上有了较大的提升,下面可以看看WiredTiger 3.2引擎的基准测试情况。测试不仅关注其性能,还关注在检查点的执行情况。
测试使用iiBench工具,此工具地址见: https://github.com/mdcallag/iibench-mongodb
iibench-mongodb工具使用需求:
- Java 1.6或1.7版
- MongoDB的Java驱动必须包含到类路径下
比如CLASSPATH中:
# cd /home
# wget http://central.maven.org/maven2/org/mongodb/mongo-java-driver/3.2.0/mongo-java-driver-3.2.0.jar
# export CLASSPATH=/home/mongo-java-driver-3.2.0.jar:$CLASSPATH
WiredTiger的命令行:
numactl --interleave=all ./mongod --dbpath=/mnt/i3600/mongo/ --storageEngine=wiredTiger --syncdelay=900 --wiredTigerCacheSizeGB=10 --wiredTigerJournalCompressor=none
服务器情况:
- 存储设备: Intel SSD DC P3600 SSD 1.6TB
- 主机CPU: Bare Metal powered by Intel(R) Xeon(R) CPU E5-2680
- 测试数据集:2亿条记录,单个索引
测试结果如图所示:
WiredTiger 3.2引擎确实更快。执行完成WiredTiger 3.2引擎花了31分钟,而WiredTiger 3.0引擎花了51分钟。
但是,WiredTiger 3.2引擎仍然存在一些问题。在测试期间,WiredTiger有一分钟左右的时间拒绝处理数据。