序言

工作中,遇到单机高并发,大数据量的数据存储场景,mysql显得有些吃力,mongodb具有高并发(1k稳定),大数据存储的特点.想要引入,故针对mongo的基础CRUD性能,做测试验证.
这里针对大数据量的插入和查询,分别测试mongodb和mysql的效率
目前,数据库综合排名,mysql第二,mongdb第四/第五

测试说明

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

插入/查询

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

测试类型次数mongodbmysql结果
插入1w500ms/195ms(原生)1100ms/4000ms(原生)插入效率,mongodb快至少一倍
插入10w1800ms3700ms插入效率,mongodb快一倍
查询10080ms/47ms(原生)108ms/43(原生)查询效率,框架版,mongodb快一些,原生版相差不大
查询1k134ms/57ms(原生)153ms/67ms(原生)查询效率,不管是框架版还是原生版,mongodb快一些
查询1w247ms/110ms(原生)289ms/135(原生)查询效率,不管是框架版还是原生版,mongodb快一些
查询10w1078ms/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更稳定.
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐