序言
工作中,遇到单机高并发,大数据量的数据存储场景,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 版权协议,转载请附上原文出处链接和本声明。