数据库mongodb效率测试

  • Post author:
  • Post category:其他




序言

工作中,遇到单机高并发,大数据量的数据存储场景,mysql显得有些吃力,mongodb具有高并发(1k稳定),大数据量存储的特点.想要引入,故针对mongo的基础CRUD性能,做测试验证.

这里针对大数据量的插入和查询,分别测试mongodb和mysql的效率

目前,数据库综合排名,mysql第二,mongdb第四/第五



测试说明

测试时间-括号原生 :数据库官方提供的java连接驱动
测试时间-未括号标注 :表示采用的框架.mysql框架为mybatis,mongodb框架为spring-boot-data-mongodb
*数据库版本* : mysql 5.7,mongodb 4.0.27



插入/查询

多次测试,取平均值,得到测试耗时

测试类型 次数 mongodb mysql 结果
插入 1w 500ms/195ms(原生) 1100ms/4000ms(原生) 插入效率,mongodb快至少一倍
插入 10w 1800ms 3700ms 插入效率,mongodb快一倍
查询 100 80ms/47ms(原生) 108ms/43(原生) 查询效率,框架版,mongodb快一些,原生版相差不大
查询 1k 134ms/57ms(原生) 153ms/67ms(原生) 查询效率,不管是框架版还是原生版,mongodb快一些
查询 1w 247ms/110ms(原生) 289ms/135(原生) 查询效率,不管是框架版还是原生版,mongodb快一些
查询 10w 1078ms/644ms(原生) 654ms/410ms(原生) 查询效率,不管是框架版还是原生版,mysql快一些



结论

数据插入:mongodb表现比mysql快了将近一倍,如果mongodb采用原生的方式,插入效率快了不止一倍
数据查询:在查询数据量小于1w时mongodb基本上快一些,大于1w,查询效率会渐渐被mysql超过.
思考:测试过程并没用到条件查询. 由于mongodb的数据存储形式为Bson(类json),在非索引 条件查询效率会明显高于mysql,从实际业务角度,业务查询导致索引失效的场景 mongodb将具备优势
**说明**
#并发说明
这里并不涉及到并发插入和查询. 根据mongodb的官网和业界的反馈,mongodb在并发场景,并发效率明显高于mysql,能在单机运行时支持更多的并发不至于崩溃,并发上限比mysql更高,这也是mongodb的重要重要优势.
#事务说明
经过测试,mongodb单机是支持事务的,能够在代码发生错误后,原先的数据库更新操作回滚
**总结**
从测试情况和特性优势来看,mongodb是值得采纳的数据库,性能上教于mysql有明显优势.
不严谨认知,mongodb的产品时间短于mysql,也许mysql更稳定.



版权声明:本文为Lang_Perry原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。