一、MongoDB3.0.x的版本特性(相对于MongoDB2.6及以下)
  • 增加了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:
#./mongo  127.0.0.1:11111 
      6. 查看当前的引擎状态:
> db.serverStatus()  
"storageEngine" : {
                "name" : "wiredTiger"
 
      7. python连接MongoDB MMAPv1写入配置:
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. 测试结果:100万条数据写入花费了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. 测试结果:100万条数据写入花费了10分3秒:

 
 
100万条的数据写入,WireTiger引擎会比MMAPv1快一些,后续再继续其他方面的性能测试。
 

记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比的更多相关文章

  1. MongoDB3.0.x版本用户授权配置(单机环境)

    MongoDB数据库默认情况下是没有做权限控制的,只要能够连接所开放的端口就能进行访问,而且拥有root级别的权限:对于生产环境而言是极不安全的,所以需要建立用户,进行授权控制. 单机环境下的用户授权 ...

  2. Mongodb2.6升级到Mongodb3.0.2笔记

    PS:升级到3版本的Mongodb以后,drop集合是可以直接释放磁盘空间的 停止老版本Mongodb >use admin >db.shutdownServer(); 下载解压新版本Mo ...

  3. mongodb3.0版本的2种引擎对比

    mongodb3.0以后 增加了wiredtiger引擎.常规引擎也升级到MMAPv1引擎(MongoDB2.6及以下版本用的是MMAP引擎):   mmapv1引擎:             col ...

  4. 把mmapv1存储引擎存储的mongodb3.0数据库数据复制到WiredTiger存储引擎的mongodb3.2中

    mongodb3.0在mmapv1的存储引擎基础上添加了一个新的存储引擎WiredTiger.但是3.0的默认存储引擎依旧是mmapv1,因此我们项目之前也就用的默认方式. 但是mongodb更新实在 ...

  5. mysql8.0以上版本修改密码问题记录

    参考链接: https://blog.csdn.net/qq_27820551/article/details/101488430 https://blog.csdn.net/mukouping82/ ...

  6. MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

    集群的模块介绍: 从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server.mongs. shard.replica set: Config Server:用来存放集群 ...

  7. 【大数据】Linux下Storm(0.9版本以上)的环境配置和小Demo

    一.引言: 在storm发布到0.9.x以后,配置storm将会变得简单很多,也就是只需要配置zookeeper和storm即可,而不再需要配置zeromq和jzmq,由于网上面的storm配置绝大部 ...

  8. Mongodb3.0.6副本集+分片学习笔记

    一.使用问题记录 1. mongodb3.0.6使用mongostat参数 >./mongostat -h 127.0.0.1:27017 -u root -p 123456 /authenti ...

  9. MongoDB3.0新特性

    3月3日,MongoDB3.0终于发布了. 主要特点包括了对之前收购的WiredTiger存储引擎的支持,插件式存储引擎API,SCRAM-SHA-1认证机制,并改进了解释功能.此外,包含了自动化.备 ...

随机推荐

  1. 【Android】[转] Android Codec默认profile使用的是Baseline

    关于Android默认Codec使用的Profile找了半天没发现,还是Google的时候发现了开源中国有网友写的这边博客,相关的内容很少,便贴了过来做个笔记. 以下内容转自Android Media ...

  2. js赋值运算的理解

    简介 js引擎由于为了效率,很多时候的非直接量赋值都不是copy一份在赋值给新的变量,而是一个引用 ps:直接量:直接值数字字符串等 为什么使用len = doms.length; 里的len效率要比 ...

  3. unity3D-iOS工程整合爬过的坑~

    unity3D-iOS工程整合爬过的坑~ 好久好久没有写博了~ 最近换了一份有意思的新工作,也是当下最热门的新技术,AR技术.笔者之前一直是做iOS开发的,接触了一门全新的技术,兴奋了好久好久,笔者也 ...

  4. 利用SHELL脚本实现文件完整性检测程序(1.2版更新)

    一..开发背景 因时势所逼,需要对服务器的文件系统实行监控.虽然linux下有不少入侵检测和防窜改系统,但都比较麻烦,用起来也不是很称手.自己琢磨着也不需要什么多复杂的功能,写个脚本应该就可以满足基本 ...

  5. Windows Service--Write a Better Windows Service

    原文地址: http://visualstudiomagazine.com/Articles/2005/10/01/Write-a-Better-Windows-Service.aspx?Page=1 ...

  6. jquery制作论坛或社交网站的每天打卡签到特效

    效果:http://hovertree.com/texiao/jquery/50/ 现在许多社区,购物等网站都设置签到功能,打开可以收获经验.虚拟币等,提高用户粘性,增加浏览量,是一个不错的功能.本文 ...

  7. HTML中嵌入pdf的简单方法

    <embed src="> 或者你不想显示某些功能的话: <embed src=">

  8. [moka同学笔记]使用composer 安装yii2以及遇到的问题

    [一.Yii2安装过程] 使用composer安装,composer安装请参考其他博客 1.下载 Yii2 高级模板 跟普通模板一样 , 可以通过 Composer 和 github 下载 ,不过官方 ...

  9. 从零开始学 Java - CentOS 安装 JDK

    我来总结一下吧 昨天我写了一篇从零开始学 Java - 我放弃了 .NET ?,在园子里突然引起了强烈的讨论,有期待我能持续更新的.有鼓励支持的.有相同经历的.也有同一个学校的师兄弟(我们相认了).当 ...

  10. Ext.Net MVC 配置(2)

    在VS2012中使用NuGet类库管理器配置EXT.NET MVC环境在“Ext.Net MVC 配置(1)”文章已经写到,方法很简单也很方便,但就是不知道它在安装这些库时对项目做了什么很不爽. 通过 ...