`
pingfeng
  • 浏览: 59341 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mongoDB vs mysql 性能对比测试

阅读更多

测试环境:

  型号名称:    iMac
  处理器名称:    Intel Core 2 Duo
  处理器速度:    3.06 GHz
  处理器数量:    1
  总核心数:    2
  L2 高速缓存:    3 MB
  内存:    4 GB
  总线速度:    1.07 GHz

测试方案:

js脚本向mongo向一个collection里插入一百万个文档

用mongo的ruby driver做CRDU操作

ruby脚本向mysql的表插入100万条记录

用AR做CRDU操作

 

测试AR的CRDU与mongo ruby driver的CRDU性能

 

测试结果:

 

mysql vs mongo

                                                      |      AR |   MONGO
---------------------------------------------------------------------------
Model.create                                     x1000 |   1.235 |  0.337
Resource#update                                  x1000 |   0.765 |  0.079
Resource#destroy                                   x10 |   0.009 |  0.00074

Model.first                                      x1000 |   0.279 |  0.223

Model.find(id)                                   x1000 |   0.240 |  0.304
Model.find not use index                           x10 |   6.359 |  5.04
Model.find not use index                              x10 |  18.952 |  10.479  ( mysql:big field, mongo:find sub-doc)           

 

结果分析:

 

虽然mysql记录与mongo的文档不是完全一致的,但在同一水平上。

 

1. 基本查找:找first与通过id查找,两者差不多

 

2. 无索引查找:mongo要比mysql快一点 。最后一行数据是指mysql有大字段,而mongo则对子文档字段作查找。

 

3. create, update, destroy, mongo基本要比mysql快一个数量级

 

测试脚本见附件

 

分享到:
评论
16 楼 forchenyun 2011-04-17  
百万级别,mysql不是问题,建议你可以看看mongo的亿级别数据量测试:
http://blog.nosqlfan.com/html/1388.html
一般来说,IO密集型应用,缓存命中率是性能的唯一评测点
15 楼 calvinlyc 2011-04-14  
..........2个完全不同的东西,去比他干什么呢
14 楼 pingfeng 2011-04-13  
Saito 写道
From Mississippi 写道
    The three operations that this chapter focused on (inserts, removes, and updates) seem
instantaneous because none of them waits for a database response. They are not asyn-
chronous; they can be thought of as “fire-and-forget” functions: the client sends the
documents to the server and immediately continues. The client never receives an “OK,
got that” or a “not OK, could you send that again?” response.

    The benefit to this is that the speed at which you can perform these operations is terrific.
You are often only limited by the speed at which your client can send them and the
speed of your network. This works well most of the time; however, sometimes some-
thing goes wrong: a server crashes, a rat chews through a network cable, or a data center
is in a flood zone. If the server disappears, the client will happily send some writes to
a server that isn’t there, entirely unaware of its absence. For some applications, this is
acceptable. Losing a couple of seconds of log messages, user clicks, or analytics in a
hardware failure is not the end of the world. For others, this is not the behavior the
programmer wants (payment-processing systems spring to mind).



Mongodb CUD上快是肯定且有代价的.
或许你可以在safe mode上再跟mysql"平等"的测试一下.
Mongodb1.8 release的Journaling对引用后段的问题会有所帮助,不过怀疑会降低些许Mongodb的性能.没测试过.


确实,在产品开发中打开了安全模式。如用mongoid的save也没有发现成功和失败的返回。
有时间再测一下安全模式。
13 楼 pingfeng 2011-04-13  
rocy 写道
js 和 ruby 两种语言也不在一个量级上啊..
都用ruby来做麻烦么?


是都是用ruby来写,只是100万个文档生成的时候用js做的。

“js脚本向mongo向一个collection里插入一百万个文档

用mongo的ruby driver做CRDU操作

ruby脚本向mysql的表插入100万条记录

用AR做CRDU操作”
12 楼 pingfeng 2011-04-13  
yongdi2 写道
学习下。lz是华为的吧,看工牌带子

参加QCon会议的带子,不是华为的带子,呵呵
11 楼 skzr.org 2011-04-12  
freish 写道
一个用ruby,一个用js,外部环境都不同,还谈何比较!

是阿,没有想象中的快
10 楼 Saito 2011-04-12  
From Mississippi 写道
    The three operations that this chapter focused on (inserts, removes, and updates) seem
instantaneous because none of them waits for a database response. They are not asyn-
chronous; they can be thought of as “fire-and-forget” functions: the client sends the
documents to the server and immediately continues. The client never receives an “OK,
got that” or a “not OK, could you send that again?” response.

    The benefit to this is that the speed at which you can perform these operations is terrific.
You are often only limited by the speed at which your client can send them and the
speed of your network. This works well most of the time; however, sometimes some-
thing goes wrong: a server crashes, a rat chews through a network cable, or a data center
is in a flood zone. If the server disappears, the client will happily send some writes to
a server that isn’t there, entirely unaware of its absence. For some applications, this is
acceptable. Losing a couple of seconds of log messages, user clicks, or analytics in a
hardware failure is not the end of the world. For others, this is not the behavior the
programmer wants (payment-processing systems spring to mind).



Mongodb CUD上快是肯定且有代价的.
或许你可以在safe mode上再跟mysql"平等"的测试一下.
Mongodb1.8 release的Journaling对引用后段的问题会有所帮助,不过怀疑会降低些许Mongodb的性能.没测试过.
9 楼 freish 2011-04-12  
一个用ruby,一个用js,外部环境都不同,还谈何比较!
8 楼 orcl_zhang 2011-04-12  
引用

不能直接拿这两者性能吧,他们的定位都不同。mysql是关系型数据训,而mongodb是基于文档的。


后者对关系型数据支持不好,而且没有事务机制,而mongo擅长存储日志,系统动态等没有什么关联,且不太重要的信息。


不知道,有没有用mogodb,和mysql的混合数据库的经验分享下,有的话透露下,我想尝试下。还有mogodb有木有db缓存?或者这方面的插件之类的。
7 楼 rocy 2011-04-11  
js 和 ruby 两种语言也不在一个量级上啊..
都用ruby来做麻烦么?
6 楼 dxm1986 2011-04-11  
<div class="quote_title">pingfeng 写道</div>
<div class="quote_div">
<p><span style="font-size: medium;">测试环境:</span>
<br><br>
  型号名称:    iMac<br>
  处理器名称:    Intel Core 2 Duo<br>
  处理器速度:    3.06 GHz<br>
  处理器数量:    1<br>
  总核心数:    2<br>
  L2 高速缓存:    3 MB<br>
  内存:    4 GB<br>
  总线速度:    1.07 GHz<br><br><span style="font-size: medium;">测试方案:</span>
<br><br>
用js脚本向mongo向一个collection里插入一百万个文档</p>
<p>用ruby脚本向mysql的表插入100万条记录</p>
<p> </p>
<p>测试AR的CRDU与mongo ruby driver的CRDU性能</p>
<p> </p>
<p><span style="font-size: medium;">测试结果:</span>
</p>
<p> </p>
<p>mysql vs mongo<br><br>
                                                      |      AR |   MONGO<br>
---------------------------------------------------------------------------<br>
Model.create                                     x1000 |   1.235 |  0.337<br>
Resource#update                                  x1000 |   0.765 |  0.079<br>
Resource#destroy                                   x10 |   0.009 |  0.00074</p>
<p>Model.first                                      x1000 |   0.279 |  0.223</p>
<p>Model.find(id)                                   x1000 |   0.240 |  0.304<br>
Model.find not use index                           x10 |   6.359 |  5.04<br>
Model.find not use index                              x10 |  18.952 |  10.479  ( mysql:big field, mongo:find sub-doc)            </p>
<p> </p>
<p><span style="font-size: medium;">结果分析:</span>
</p>
<p> </p>
<p>虽然mysql记录与mongo的文档不是完全一致的,但在同一水平上。</p>
<p> </p>
<p>1. 基本查找:找first与通过id查找,<span style="color: #0000ff;">两者差不多</span>
</p>
<p> </p>
<p>2. <span style="color: #0000ff;">无索引查找:mongo要比mysql快一点</span>
。最后一行数据是指mysql有大字段,而mongo则对子文档字段作查找。</p>
<p> </p>
<p>3. create, update, destroy, <span style="color: #0000ff;">mongo基本要比mysql快一个数量级</span>
。</p>
<p> </p>
<p>测试脚本见附件</p>
<p> </p>
</div>
<p>不能直接拿这两者性能吧,他们的定位都不同。mysql是关系型数据训,而mongodb是基于文档的。</p>
<p> </p>
<p>后者对关系型数据支持不好,而且没有事务机制,而mongo擅长存储日志,系统动态等没有什么关联,且不太重要的信息。</p>
5 楼 yongdi2 2011-04-11  
学习下。lz是华为的吧,看工牌带子
4 楼 tcray 2011-04-11  
云中苍月 写道
tcray 写道
nosql快倒是快啊 但是目前阶段还是无法取代关系数据库啊 复杂的查询就是nosql的一个软肋

应用场景不同用不同的产品,用了nosql就别考虑复杂查询,单一产品不可能完美。


同意  看看自己的东西更注重哪个方面吧  没有完美的东西
3 楼 油炸大龙虾 2011-04-11  
个人认为还是比较一下集群以后的效率才有意义。
复杂查询是设计的问题,mongo无视
2 楼 云中苍月 2011-04-11  
tcray 写道
nosql快倒是快啊 但是目前阶段还是无法取代关系数据库啊 复杂的查询就是nosql的一个软肋

应用场景不同用不同的产品,用了nosql就别考虑复杂查询,单一产品不可能完美。
1 楼 tcray 2011-04-11  
nosql快倒是快啊 但是目前阶段还是无法取代关系数据库啊 复杂的查询就是nosql的一个软肋

相关推荐

    mysql和mongodb性能对比报告

    ### MySQL与MongoDB性能对比分析 #### 测试背景与目的 随着大数据时代的到来,数据库的选择对系统的性能至关重要。本报告旨在通过一系列实验对比MySQL和MongoDB两种不同类型的数据库(关系型数据库与NoSQL数据库)...

    千万级Mysql-MongoDB性能对比报告

    本次性能对比测试主要关注不同规模的数据插入操作在MySQL和MongoDB中的表现情况,特别是在处理千万级别数据时的表现。测试涵盖了不同的数据提交方式和数据量,旨在全面评估两种数据库系统的性能差异。 #### MySQL...

    mysql-mongo-performance-test-a:RDBMS和MongoDB的性能对比

    本项目“mysql-mongo-performance-test-a”关注的是RDBMS(关系型数据库管理系统)代表MySQL与NoSQL数据库代表MongoDB之间的性能对比。这次更新是对此主题的深入探究,特别是针对数据插入和查询操作的性能测试。 ...

    MongoDBTest.

    MongoDBTest是一个可能的项目或实验,旨在对比和评估不同类型的数据库(可能包括MongoDB、MySQL、PostgreSQL等)在特定场景下的性能表现。 在“3种DB的效率测试.rar”中,很可能包含了对三种不同数据库系统进行的一...

    数据库测试DB,mysql官方测试数据库文件,employee

    数据库测试是软件开发过程中的重要环节,特别是在关系型...同时,与MongoDB的对比测试进一步拓宽了对不同数据库系统的理解。在"test_db-master"中,我们可以学习如何建立和测试数据库,提升数据库管理和开发技能。

    MongoDB开发应用实践

    在经过一番比较和测试之后,视觉中国最终选择了MongoDB作为其数据库解决方案。 ##### 选型条件: - **语言支持**:要求同时支持PHP/Perl等语言的客户端。 - **性能要求**:性能不能显著低于Memcached。 - **集群...

    计算机-mysql-面向应用的SQLNoSQL数据库操作性能研究.pdf

    【MySQL vs. NoSQL:面向应用的数据库操作性能研究】 在现代计算机系统中,数据库的选择对系统的性能和可扩展性有着重大影响。本研究聚焦于SQL(如Oracle)与NoSQL(如MongoDB)数据库在面向应用的操作性能上的对比...

    mongodb学习实战

    #### 四、MySQL与MongoDB设计实例对比 这部分内容介绍了在不同的应用场景下,如何选择MySQL或MongoDB,并分析了它们各自的优势与不足。 #### 五、性能测试 - 包括了多个性能测试案例,旨在评估MongoDB在不同场景...

    sysbench-mongo:MongoDB javascript shell 的 sysbench 克隆

    4. **分析**: 查看测试结果,分析性能数据,可能需要多次运行以获取平均值或对比不同设置的效果。 sysbench-mongo 对于 MongoDB 性能调优和监控非常有用,尤其是在大型分布式系统中,通过其提供的详尽性能数据,...

    MongoDB服务及行业应用方案概述.pdf

    **挑战**:企业在采用MongoDB的过程中可能会遇到各种挑战,例如开发团队和运维团队缺乏相关的经验和知识,特别是在与其他传统数据库(如MySQL或Oracle)的对比中。 **解决方案**: - 提供MongoDB的专业技术服务,...

    lepus(天兔)监控MySQL主从复制延迟,慢查询

    3. 慢查询:慢查询指的是数据库查询操作耗时过长,对于性能影响较大,Lepus能够对这类问题进行监控和报警。 描述所指知识点: 1. Lepus监控完整版功能:这个监控系统不仅仅可以监控MySQL,还能监控SQL Server、...

    DatabaseComparison:该项目专注于比较MySQL和MongoDB的不同方面

    源代码可能包含了一系列示例,演示如何使用Java连接MySQL和MongoDB,执行常见的数据库操作,并对比两者的性能。配置文件可能包含了数据库连接的参数,例如主机名、端口、用户名和密码。测试数据可能被用来验证和展示...

    基于NoSQL和MySQL的科研信息管理系统开发.pdf

    作者通过对比测试,解决了科研信息管理系统的查询性能问题,提升了数据扩展能力。 在实际应用中,科研信息管理系统需要管理科研项目、论文和学生信息等多方面内容。文章指出,随着高校在校学生数量的增长,科研信息...

    自行车对比咨询平台wx+node

    8. **测试与部署**:在开发过程中,单元测试、集成测试确保代码质量,而性能测试则检查系统在高负载下的表现。部署方面,可能使用Docker容器化技术,配合Nginx等反向代理服务器,实现弹性伸缩和高可用性。 9. **...

    db_benchmarks:mongodbmysqlother dbs的基准代码

    《数据库性能基准测试:MongoDB、MySQL与其他数据库的对比》 在信息技术领域,数据库系统的选择对应用程序的性能、可扩展性和稳定性起着至关重要的作用。本篇将详细探讨一款名为"db_benchmarks"的项目,它是一个用...

    中国数据库技术大会数据库性能优化专场PPT资料.rar

    同时,定期进行性能基准测试,对比优化前后的效果,可以量化性能改进的程度。 总之,"中国数据库技术大会数据库性能优化专场PPT资料"包含了丰富的理论知识和实践经验,无论是对于数据库管理员还是开发人员,都是...

    mysql面试题.docx

    MySQL 是一款广泛使用的开源关系型数据库...这些知识点覆盖了 MySQL 的基本操作、权限管理、备份恢复、性能优化和高可用性等方面,是面试中常见的问题。理解并掌握这些知识点对于成为一名合格的 MySQL DBA 至关重要。

    netcoreapp3.1_大数据对比比较程序_

    2. **数据源集成**:系统可能集成了多种数据源,如关系型数据库(如SQL Server、MySQL)、NoSQL数据库(如MongoDB、Cassandra)或者云存储服务(如Amazon S3、Google Cloud Storage)。 3. **数据清洗与预处理**:...

    postgresql_简介

    - **性能对比**:虽然 Oracle 数据库在某些特定领域表现出色,但 PostgreSQL 在复杂 SQL 查询、存储过程、触发器等方面具有明显的优势。 ### PostgreSQL 的特点 - **广泛的数据类型支持**:除了基本的数据类型外,...

    test for db

    - 数据库是按照一定规则组织和存储数据的系统,常见的关系型数据库有MySQL、Oracle、SQL Server等,非关系型数据库有MongoDB、Redis、Cassandra等。 - 关系型数据库遵循ACID(原子性、一致性、隔离性和持久性)...

Global site tag (gtag.js) - Google Analytics