当前位置:   article > 正文

比较 MongoDB 与 MySQL 以及性能测试_mongodb和mysql的查询速度

mongodb和mysql的查询速度

MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库(另称文档型数据库),是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。

关于 MongoDB,优点如下:

• MongoDB 的结构更灵活,因为它是一个文档型的 NoSQL 数据库,允许用户添加和删除数据库字段,而不必改变整个数据库结构;

• MongoDB 提供了高性能,无缝的扩展性和扩展性,可以很容易地横向扩展数据库,从而改善存储能力和处理能力;

• MongoDB 可以处理大量动态数据,因为文档可以包含不同类型的数据;

• MongoDB 支持高级功能,包括索引,聚合管道和分片,以提供强大的查询功能;

• MongoDB 支持一些新的特性,如内存限制,自动缓存,可插拔式存储引擎等;

• MongoDB 支持大量编程语言,这样能够更轻松地与现有代码集成;

当然,MongoDB 也有一些缺点,比如,它不能执行复杂的关系查询,缺乏一些高级的数据库特性,比如主从复制,事务等等。

相比之下,MySQL 的优点是:

• MySQL 支持原始 SQL 语句,支持复杂的查询,因此能够处理复杂的数据;

• MySQL 支持强大的回滚管理,这样可以避免不需要的或):错误的更改;

• MySQL 支持外部键,这样可以有效地关联两个表;

• MySQL 支持复杂的视图结构,可以从不同的表中提取数据;

• MySQL 拥有极佳的社区支持,有快速的解决方案;

• MySQL 轻便,拥有低延迟,因此可以处理大量数据;

但是,MySQL 也有一些缺点,它无法处理非关系型数据,它的数据结构也非常死板,对动态数据的处理也做得不够好。

接下来我们比较2个数据库的性能水平:

1. 百万、千万级别的下不同查询量不同并发量的压测结果

数据库表中记录数总量在百万、千万级别的压测数据及结果如表所示:

2. 亿级别的下不同查询量不同并发量的压测结果

数据库表中记录数总量在亿级别的压测数据及结果如表所示:

压测结果分析:

1)当每次查询数据量在500条时,无论表中数据总量千万或者亿级别,Mysql和MongoDB在100线程并发的情况下查询性能相当,表现良好,平均响应时间在500ms以内,TPS在230左右。

2)当每次查询数据量在5000条时,表中数据总量为千万级别时,MongoDB在50线程并发情况下查询性能不及Mysql 的一半,100线程并发情况查询性能都很差,平均响应时间在4500ms左右,表中数据总量为亿级别时,在50个及以上的并发情况下,MongoDB和Mysql性能都较差。

在本案例简单数据模型下的时间范围内的等值查询应用场景下,MongoDB在高并发条件下的大数据量查询性能并没有比Mysql更好。另外还有一点需要注意的是,在本案例中,数据总量由百万级别到千万级别再到亿级别的变化过程中,对于查询性能的影响都不是很大,但对于查询数据量的数倍增长却十分敏感,所以在考量数据库查询性能的时候,也要重点考量应用的单次查询量的需求。

所以具体使用Mysql还是MongoDB,需要根据自己的业务场景做出相应的选择。

附带Mysql和MongoDB的学习教程,有需要的同学可以去看看:

Mysql:我们身边有哪些数据库 - 数据库入门 - Mysql - 小牛知识库

Mongodb: NoSQL是什么 - MongoDB教程 - MongoDB - 小牛知识库

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/583061
推荐阅读
相关标签
  

闽ICP备14008679号