MongoDB4和MysSQL5.7的读/写和事务处理速度简单对

2018-10-14  本文已影响0人  justonlyyo

系统环境: Ubuntu 18.04
数据库 MysSQL5.7/MongoDB4.0

插入的数据为随机生产,不重复.

MySQL使用的连接库是 sqlalchemy
MongoDB使用的连接库是pymongo

测试分三个部分

  1. 写入测试
  2. 查询测试
  3. 事务测试

MysSQL 5.7 VS MOngoDB 4.0

插入测试

表很简单.只有一个sn字符串的字段.和一个_id.
_id作为主键都是由数据库自行生成的.
mysql表使用的是InnoDB引擎.字符集utf-8
mysql和mongodb都使用批量插入的方法,插入2万条数据.
两者都是有连接池的.

mongodb (w0)分组插入2万条记录耗时 1.798202秒
mongodb (w1)分组插入2万条记录耗时 2.229613秒
mongodb (w:majority)分组插入2万条记录耗时 3.3718秒
mongodb (w1, j1)分组插入2万条记录耗时 3.332055秒
mongodb (w:majority, j1)分组插入2万条记录耗时 3.594414秒
mysql 分组插入2万条记录耗时 33.024626秒

对写测试结果稍微做一下说明:
w和j是mongodb的写关注选项.w0,w1....之类的分别代表写关注处于不同的模式(写关注可以理解为mongodb对写入数据的可靠用使用何种确认方式?).

插入测试结果:可以看到,我们即使让mongodb工作在和mysql类似的工作模式下.mongodb还是有着10倍左右的写入速度上的优势.这和其他人的测试结果基本吻合(mongodb的写入速度比mysql高一个数量级)

查询测试

查询测试使用的是同一张表:
表中只有一个字段sn. 没有索引.使用一个数据库不存在的sn进行条件查询以便让数据库遍历所有的记录.
测试的结果如下:

mongodb 1万次查询记录耗时 17.88544秒
mysql 1万次查询记录耗时 86.453012秒

可以看出来,查询的速度差别没写入那么大.(大约是5倍上下的速度差距)

事务测试

事务能力测试的需要至少2张表. 在对第一张表操作后,接着操作第二张表.操作过程中涉及的查询不使用索引.

mongodb 1000次事物操作耗时 5.91422秒
mysql 1000次事物操作耗时 42.471786秒

双方的事务操作速度大概是7倍的差距.

本来还是打算做一个连接(join)查询的测试.不过估计结果也不会有什么太大的改变.就是打住吧.

总结

目前来看,至少在速度上,MongoDB是让MySQL在后面吃灰. 功能上,以前没有的连接查询和事务都已经完美的支持了.如果是没有历史包袱的新项目的话,还是很推荐大家使用MongoDB的.

MysSQL 5.7 VS MOngoDB 4.0

上一篇 下一篇

猜你喜欢

热点阅读