recherche

Maison  >  Questions et réponses  >  le corps du texte

nosql - mongo为什么比mysql快

求高手简单明了的回答一下,越通俗越好。

PHP中文网PHP中文网2784 Il y a quelques jours640

répondre à tous(6)je répondrai

  • 迷茫

    迷茫2017-04-17 11:34:43

    写操作MongoDB比传统数据库快的根本原因是Mongo使用的内存映射技术 - 写入数据时候只要在内存里完成就可以返回给应用程序,这样并发量自然就很高。而保存到硬体的操作则在后台异步完成。注意MongoDB在2.4就已经是默认安全写了(具体实现在驱动程序里),所以楼上有同学的回答说是”默认不安全“应该是基于2.2或之前版本的。

    读操作MongoDB快的原因是: 1)MongoDB的设计要求你常用的数据(working set)可以在内存里装下。这样大部分操作只需要读内存,自然很快。 2)文档性模式设计一般会是的你所需要的数据都相对集中在一起(内存或硬盘),大家知道硬盘读写耗时最多是随机读写所产生的磁头定位时间,数据集中在一起则减少了关系性数据库需要从各个地方去把数据找过来(然后Join)所耗费的随机读时间

    另外一个就是如@王子亭所提到的Mongo是分布式集群所以可以平行扩展。目前一般的百万次并发量都是通过几十上百个节点的集群同时实现。这一点MySQL基本无法做到(或者要花很大定制的代价)

    répondre
    0
  • 迷茫

    迷茫2017-04-17 11:34:43

    不能说的这么绝对,有很多时候 mongo 并不一定比MySQL快

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-17 11:34:43

    什么场景、业务、背景都不说,就说mongo为什么比mysql快?你用过两者么?你是来黑mysql吧。去学习下如何提问题吧!

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-17 11:34:43

    mysql是关系型数据库 里面存的是一张一张的表 分布式存储要求把表拆开 存在不同的盘里面

    你是竖着拆还是横着拆呢? 竖着拆你一个普通查询就要join

    横着拆没那么麻烦了 但是如果你的语句有join 不管你要找的那条记录在哪个盘里面 它都会遍历所有的盘来生成join的结果

    能不慢么?

    répondre
    0
  • 怪我咯

    怪我咯2017-04-17 11:34:43

    简单明了:

    • MongoDB 默认的写入都是不安全写入,即数据会暂时保存在内存,且不等写入完成就返回「成功」的结果
    • MongoDB 是非关系型数据库,支持的查询操作比较少
    • MongoDB 天生为分布式集群设计(例如使用 ObjectID 而不是顺序 ID), 易于扩容

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-17 11:34:43

    大数据量的话,建议别用mongo

    répondre
    0
  • Annulerrépondre