记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3291字,纯文字阅读大概需要5分钟。
内容图文
![记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比](/upload/InfoBanner/zyjiaocheng/1159/66044cf496964d4bb0511952c775a7e4.jpg)
- 增加了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
#./mongod --dbpath=/data/db --logpath=/data/log
#./mongo
> db.serverStatus()"storageEngine" : {"name" : "mmapv1"
#./mongod --dbpath=/data/wiredtiger --logpath=/data/wiredtiger/log
#./mongo 127.0.0.1:11111
> db.serverStatus()"storageEngine" : {"name" : "wiredTiger"
import time import datetime import timeit import math ISOTIMEFORMAT = ‘%Y-%m-%d %X‘from pymongo import MongoClient mc = MongoClient("172.16.16.169",27017) db = mc.users def dateDiffInSeconds(date1,date2): timedelta = date2 - date1 return timedelta.days*24*3600 +timedelta.seconds date1 = datetime.datetime.now() db.users.drop() for i in 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写入配置:
import time import datetime import timeit import math ISOTIMEFORMAT = ‘%Y-%m-%d %X‘from pymongo import MongoClient mc = MongoClient("172.16.16.169",27017) db = mc.users def dateDiffInSeconds(date1,date2): timedelta = date2 - date1 return timedelta.days*24*3600 +timedelta.seconds date1 = datetime.datetime.now() db.users.drop() for i in 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秒:
![技术分享](/upload/getfiles/default/2022/11/10/20221110110449240.jpg)
原文:http://www.cnblogs.com/ljai/p/4883007.html
内容总结
以上是互联网集市为您收集整理的记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比全部内容,希望文章能够帮你解决记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。