迅闻网
让更多人看到你

mongodb和mysql的区别

  mongodb和mysql的区别

在数据库寄存的数据中,有一种特别的键值叫做主键,它用于惟一地标识表中的某一条记载。也就是说,一个表不能有多个主键,并且主键不能为空值。无论是MongoDB仍是MySQL,都存在着主键的界说。
对于MongoDB来说,其主键名叫”_id”,在生成数据的时分,假如用户不主动为其分配一个主键的话,MongoDB会主动为其生成一个随机分配的值。
在MySQL中,主键的指定是在MySQL刺进数据时指明PRIMARYKEY来界说的。当没有指定主键的时分,另一种东西——索引,相当于替代了主键的功能。索引可认为空,也能够有重复,别的有一种不允许重复的索引叫惟一索引。假如既没有指定主键也没有指定索引的话,MySQL会主动为数据创建一个。
存储速度比照
1、数据库的平均刺进速率:MongoDB不指定_id刺进>MySQL不指定主键刺进>MySQL指定主键刺进>MongoDB指定_id刺进。
2、MongoDB在指定_id与不指定_id刺进时速度相差很大,而MySQL的不同却小许多。
剖析:
1、在指定_id或主键时,两种数据库在刺进时要对索引值进行处理,并查找数据库中是否存在相同的键值,这会减慢刺进的速率。
2、在MongoDB中,指定索引刺进比不指定慢许多,这是因为,MongoDB里每一条数据的_id值都是唯一的。当在不指定_id刺进数据的时分,其_id是体系主动计算生成的。MongoDB通过计算机特征值、时刻、进程ID与随机数来保证生成的_id是唯一的。而在指定_id刺进时,MongoDB每插一条数据,都需求查看此_id可不可用,当数据库中数据条数太多的时分,这一步的查询开支会拖慢整个数据库的刺进速度。
3、MongoDB会充沛使用体系内存作为缓存,这是一种非常优秀的特性。咱们的测验机的内存有64G,在刺进时,MongoDB会尽或许地在内存快写不进去数据之后,再将数据持久化保存到硬盘上。这也是在不指定_id刺进的时分,MongoDB的功率遥遥领先的原因。但在指定_id刺进时,当数据量一大内存装不下时,MongoDB就需求将磁盘中的信息读取到内存中来查重,这样一来其刺进功率反而慢了。
4、MySQL不愧是一种非常安稳的数据库,无论在指定主键仍是在不指定主键刺进的状况下,其功率都差不了太多。

 

mysql
刺进安稳性剖析
刺进安稳性是指,随着数据量的增大,每刺进必定量数据时的刺进速率状况。
在本次测验中,咱们把这个指标的规划定在10w,即显现的数据是在每刺进10w条数据时,在这段时刻内每秒钟能刺进多少条数据。
先呈现四张图上来:
1、MongoDB指定_id刺进:
2、MongoDB不指定_id刺进:
3、MySQL指定PRIMARYKEY刺进:
4、MySQL不指定PRIMARYKEY刺进:
总结:
1、全体上的刺进速度仍是和上一回的统计数据类似:MongoDB不指定_id刺进>MySQL不指定主键刺进>MySQL指定主键刺进>MongoDB指定_id刺进。
2、从图中能够看出,在指定主键刺进数据的时分,MySQL与MongoDB在不同数据数量级时,每秒刺进的数据每隔一段时刻就会有一个动摇,在图表中显现成为规则的毛刺现象。而在不指定刺进数据时,在大多数状况下刺进速率都比较平均,但随着数据库中数据的增多,刺进的功率在某一时段有瞬间下降,随即又会变安稳。
3、全体上来看,MongoDB的速率动摇比MySQL的严重,方差改变较大。
4、MongoDB在指定_id刺进时,当刺进的数据变多之后,刺进功率有明显地下降。在其他三种的刺进测验中,从开端到完毕,其刺进的速率在大多数的时分都固定在一个标准上。
剖析:
1、毛刺现象是因为,当刺进的数据太多的时分,MongoDB需求将内存中的数据写进硬盘,MySQL需求重新分表。这些操作每逢数据库中的数据达到必定量级后就会主动进行,因而每隔一段时刻就会有一个明显的毛刺。
2、MongoDB究竟仍是新生事物,其安稳性没有已使用多年的MySQL优秀。
3、MongoDB在指定_id刺进的时分,其功能的下降仍是很厉害的。
4、在读取的数据规划不大时,MongoDB的查询速度真是一骑绝尘,甩开MySQL好远好远。
5、在查询的数据量逐步增多的时分,MySQL的查询速度是稳步下降的,而MongoDB的查询速度却有些崎岖。
剖析:
1、假如MySQL没有通过查询优化的话,其查询速度就不要跟MongoDB比了。MongoDB能够充沛利用体系的内存资源,咱们的测验机器内存是64GB的,内存越大MongoDB的查询速度就越快,究竟磁盘与内存的I/O功率不是一个量级的。
2、本次试验的查询的数据也是随机生成的,因而一切待查询的数据都存在MongoDB的内存缓存中的概率是很小的。在查询时,MongoDB需求多次将内存中的数据与磁盘进行交互以便查找,因而其查询速率取决于其交互的次数。这样就存在这样一种或许性,尽管待查询的数据数目较多,但这段随机生成的数据被MongoDB以较少的次数从磁盘中取出。因而,其查询的平均速度反而更快一些。这样看来,MongoDB的查询速度动摇也处在一个合理的范围内。
3、MySQL的安稳性仍是毋庸置疑的。
定论
1、相比较MySQL,MongoDB数据库更合适那些读作业较重的任务模型。MongoDB能充沛利用机器的内存资源。假如机器的内存资源丰富的话,MongoDB的查询功率会快许多。
2、在带”_id”刺进数据的时分,MongoDB的刺进功率其实并不高。假如想充沛利用MongoDB功能的话,推荐采纳不带”_id”的刺进方式,然后对相关字段作索引来查询。
3、MongoDB合适那些对数据库具体数据格局不明确或者数据库数据格局常常改变的需求模型,并且对开发者非常友好。
4、MongoDB官方就自带一个分布式文件体系,能够很便利地布置到服务器机群上。MongoDB里有一个Shard的概念,就是便利为了服务器分片使用的。每添加一台Shard,MongoDB的刺进功能也会以接近倍数的方式增长,磁盘容量也很能够很便利地扩大。
5、MongoDB还自带了对map-reduce运算结构的支撑,这也很便利进行数据的统计。
MongoDB的缺点
1、业务联系支撑薄弱。这也是一切NoSQL数据库共同的缺点,不过NoSQL并不是为了业务联系而设计的,具体使用仍是很需求。
2、安稳性有些短缺,这点从上面的测验便能够看出。
3、MongoDB一方面在便利开发者的同时,另一方面对运维人员却提出了相当多的要求。业界并没有成熟的MongoDB运维经验,MongoDB中数据的寄存格局也很随意,等等问题都对运维人员的考验。

未经允许不得转载:迅闻网 » mongodb和mysql的区别
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页