MongoDB性能测试

公司目前使用的数据库为MySql,已经明显看到了瓶颈,于是觉得找新的数据库代替,根据现状,新的数据库应该满足如下要求:

1.支持Linux(屁话)

2.对python编程友好(总不能因为换个数据库,拉着一群兄弟转java吧)

3.支持集群(又是屁话)

4.能在现有数据上轻易建索引,优化速度(鬼知道业务部门以后会提出个什么鬼需求来呢)

5.最好是C/C++写的(大部分都是)

去问了一下度娘,NoSQL方面无非就那几个主流的数据库可以用,大体浏览了一下,基本总结如下:

主流:HBase,Cassandra,Membase,MongoDB,Redis

其中HBase和Cassandra是使用java写的,直接被pass掉了(支持java的同学请尽情地喷)

Membase是Erlang和C写的,对Erlang印象不错

MongoDB使用C++写的,存储格式使用的是BSON,服务器的接口绝大部分是json格式,还保留了部分的MySql概念(查询,索引)

Redis使用C/C++,目前公司在用,作为一个辅助功能组件

转一圈下来,决定先试MongoDB,后续有机会再玩一下Membase。

去前台转转,顺来一部被淘汰下来的前台的PC,配置如下:

Intel(R) Pentium(R) CPU G3250 @ 3.20GHz

2核

4G内存

500G硬盘

接下来安装个Ubuntu 14.04.5 server版进去

计划先测试一下MySql在这部机器上的性能,再试MongoDB的,这样有个对比,由于线上数据库服务器外网无法直接访问,只能做个搬运工程,把线上的数据保存到excel文档,再在PC机上读excel写入到相关数据库里,这个思路把我恶心了一整天,主要是2点

1.excel一次最多只能写入7w多条记录

2.excel读的效率也使得测试结果严重失真

这时候我心爱的mqtt来救场了

在线上数据库端读取数据放进mqtt里,再在PC端监听对应的topic,把数据写入数据库,虽然与真实的性能有点差别,但这个差别是可以接受的。

测试结果如下:

《MongoDB性能测试》

其中每条数据有39个字段,MySql与MongoDB在数据插入前都建了2个多字段索引,插入的数据是一样的,数据都是逐条插入,使用普通插入模式(没使用安全插入和表锁),但MySql使用了UNIQUE KEY,MongoDB目前未做唯一性检查。

这里明显看到MongoDB的写入速度要比Mysql快很多,而且可以预测,后面随着数据量的增多,MySql的速度衰减会很明显,但MongoDB在数据达到一定规模后,性能会比较平稳。

这里要注意的还有MongoDB运行的时候内存的使用情况,MongoDB在运行时会占有大量内存,所有正式使用的时候,不适合和业务放在同一个服务器。

这里要说一下数据统计,使用相同的统计条件,MySql下初次统计耗时会较大,但再次统计时就会非常快,MongoDB的初次统计会比MySql快,但再次统计时,MongoDB还是会耗相同的时长。

    原文作者:老虎Alex
    原文地址: https://www.jianshu.com/p/2e348e3db71a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞