记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比
来源:互联网 发布:淘宝有差评的后果 编辑:程序博客网 时间:2024/06/06 13:14
增加了wiredtiger引擎:
开源的存储引擎;
支持多核CPU、充分利用内存/芯片级别缓存(注:10月14日刚刚发布的3.0.7版本中,进一步改进了内存操作的性能);
基于B-TREE及LSM算法;
提供文档级锁(document-level concurrency control),类似于关系型数据库的的行级锁;
支持文件压缩(其中snappy压缩机制可以在5%的额外CPU消耗,减少70%的空间使用,也可以根据需要调节压缩比例),三种压缩类型:
不压缩;
Snappy压缩:默认的压缩方式, Snappy是在谷歌内部生产环境中被许多项目使用的压缩库,包括BigTable,MapReduce和RPC等,压缩速度比Zlib快,但是压缩处理文件的大小会比Zlib大20%-100%, Snappy对于纯文本的压缩率为1.5-1.7,对于HTML是2-4,对于JPEG、PNG和其他已经压缩过的数据压缩率为1.0。在I7 i7 5500u 单核CPU测试中,压缩性能可在200M/s-500M/s;
Zlib压缩: Z1ib是一个免费、通用、跨平台、不受任何法律阻碍的、无损的数据压缩开发库,相对于Snappy压缩,消耗CPU性能高、压缩速度慢,但是压缩效果好。
MMAPv1引擎(MongoDB2.6及以下版本用的是MMAP引擎):
collection锁(collection-level concurrency control),在MMAP版本中,只提供了database的锁(既当一个用户对一个collection进行操作时,其他的collection也被挂起);
无缝迁移(MMAP版本的数据可以在线迁移至MMAPV1版本,也可以迁移至wiredtiger引擎中)。
可插拔的存储引擎API(类似于mysql的多引擎驱动)
通过不同的数据引擎来满足不同的数据需求;
未来更多的场景扩展。
Ops manager(MongoDB企业版提供的功能)
居于web的图形管理界面
减少日常日常和配置的工作
测试环境:
服务器硬件配置:172.16.16.169 CPU:2*E5620@ 2.40GHz、内存:8G
客户端硬件配置:172.16.40.92 CPU: 4*I5-4300U@ 1.90GHz、内存:4G
数据库:mongodb V3.0.6
开发环境:python3.4.3、pycharm4.5.4
测试前提:已安装完成了mongodb、python、pycharm
测试场景:插入100万条数据的时间消耗对比;
1. 在服务器端启动MongoDB(默认为MMAPv1引擎,默认端口为27017,在MongoDB的安装目录中启动MongoDB,定义数据和日志路径):
#./mongod --dbpath=/data/db --logpath=/data/log
2. 登录MongoDB:
#./mongo
3. 查看当前的引擎状态:
> db.serverStatus()
"storageEngine" : {
"name" : "mmapv1"
4. 在服务器端启动MongoDB(WiredTiger引擎,端口:11111,在MongoDB的安装目录中启动MongoDB,定义数据和日志路径,定义WiredTiger引擎):
#./mongod --dbpath=/data/wiredtiger --logpath=/data/wiredtiger/log
5. 登录至启动了WiredTiger引擎的Mongodb:
#./mongo127.0.0.1:11111
6. 查看当前的引擎状态:
> db.serverStatus()
"storageEngine" : {
"name" : "wiredTiger"
7. python连接MongoDB MMAPv1写入配置:
importtimeimport datetimeimporttimeitimportmathISOTIMEFORMAT = '%Y-%m-%d %X'from pymongo import MongoClientmc = MongoClient("172.16.16.169",27017)db = mc.usersdef dateDiffInSeconds(date1,date2):timedelta = date2 - date1return timedelta.days*24*3600 +timedelta.secondsdate1 = datetime.datetime.now()db.users.drop()for iin range(0,1000000) :db.users.insert({"name":"ljai","age":i,"addr":"fuzhou"})c = db.users.find().count()print("count is ",c)date2 = datetime.datetime.now()print(date1)print(date2)print(dateDiffInSeconds(date1,date2),"seconds")mc.close()
8. 测试结果:1000万条数据写入花费了12分钟28秒:
2、 python连接MongoDB WiredTiger写入配置:
importtimeimport datetimeimporttimeitimportmathISOTIMEFORMAT = '%Y-%m-%d %X'from pymongo import MongoClientmc = MongoClient("172.16.16.169",27017)db = mc.usersdef dateDiffInSeconds(date1,date2):timedelta = date2 - date1return timedelta.days*24*3600 +timedelta.secondsdate1 = datetime.datetime.now()db.users.drop()for iin range(0,1000000) :db.users.insert({"name":"ljai","age":i,"addr":"fuzhou"})c = db.users.find().count()print("count is ",c)date2 = datetime.datetime.now()print(date1)print(date2)print(dateDiffInSeconds(date1,date2),"seconds")mc.close()
9. 测试结果:1000万条数据写入花费了10分3秒:
100万条的数据写入,WireTiger引擎会比MMAPv1快一些,后续再继续其他方面的性能测试。
- 记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比
- 记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比
- 把mmapv1存储引擎存储的mongodb3.0数据库数据复制到WiredTiger存储引擎的mongodb3.2中
- MongoDb 的 MMAPv1 和 WiredTiger 存储引擎空间对比(800万文档 )
- mongodb 的 mmap 和wiredtiger 引擎对比.实现对比
- MMAPv1和WiredTiger区别
- mmapv1 vs wiredtiger
- WiredTiger引擎
- Mongodb mmapv1存储引擎解析
- Mongodb mmapv1存储引擎解析
- mongodb 3.0.2与wiredTiger存储引擎安装测试
- WiredTiger存储引擎分析
- Mongodb(1)——存储引擎WiredTiger的使用
- Unity日记---Transform与mTransform耗时对比
- mysql记录耗时的sql
- mongo wiredTiger存储引擎相关
- 【Mongo】存储引擎-WiredTiger概览
- 一次查询耗时的分析过程
- 二叉树------二叉搜索树的后序遍历序列
- 被Google Play下架刷爆朋友圈:聊聊SDK采集数据的秘密
- android safe mode
- java实现deflate算法
- Spring中配置数据源的4种形式
- 记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比
- Xcode打包的时候报此证书的签发者无效Missing iOS Distribution signing identity问题解决
- gradle配置
- CodeForces 672A Summer Camp
- iOS学习应用开发就业课_002:Label学习
- GDB使用小结- 可带参数
- 使用Gitblit 在windows 上部署你的Git Server
- The type org.apache.http.HttpEntityEnclosingRequest cannot be resolved
- 为什么Redis内存不宜过大