[英]Why ' in ' is so much faster than ' = ' in SQL Select?
[英]Any detailed and specific reasons for Why MongoDB is much faster than SQL DBs?
好的,关于MongoDB为什么这么快有疑问
我很欣赏这些答案,但是它们很笼统。 是的我知道:
好吧,我写这个问题只是为了找出答案
"Why MongoDB is so fast"
,您将如何回答? 显然仅回答: "because MongoDB is noSQL"
是不够的。 谢谢
首先,让我们将苹果与苹果进行比较: MongoDB的读写就像是在RDBMS中没有主键的表上通过主键进行的单次读写。
因此,让我们精确地进行基准测试: http : //mysqlha.blogspot.de/2010/09/mysql-versus-mongodb-yet-another-silly.html
事实证明,在完全相同的原始操作的公平比较中,速度差异并不大。 实际上,MySQL稍快一些。 我会说,它们是等效的。
为什么? 因为实际上,在该特定基准测试中,两个系统都在做类似的事情。 通过主键搜索返回单行实际上并没有那么多工作。 这是一个非常快的操作。 我怀疑跨进程通信开销是其中很大的一部分。
我的猜测是,MySQL中经过更优化的代码要比MongoDB的系统开销少一些(没有逻辑锁,可能还有其他一些小东西)。
这得出一个有趣的结论: 您可以将MySQL像文档数据库一样使用,并从中获得出色的性能。
如果面试官说:“我们不在乎文档或样式,我们只需要一个更快的数据库,您认为我们应该使用MySQL还是MongoDB?”,我该怎么回答?
我建议暂时忽略性能,并查看两个系统的相对强度。 MongoDB想到了诸如扩展(扩展)和复制之类的事情。 对于MySQL,还有很多功能,例如丰富的查询,并发模型,更好的工具和成熟度等等。
基本上,您可以以功能换取性能。 愿意这样做吗? 这是通常无法做出的选择。 如果您不惜一切代价选择性能,请考虑在添加其他技术之前先调整MySQL。
当客户通过主键检索单个行/文档时,将发生以下情况。 我将注释两个系统之间的差异:
对于典型的基于SQL的RDBMS,只有两个附加步骤。 这就是为什么没有真正区别的原因。
通常,MySQL和MongoDB在单台计算机上的“持久”写入性能非常相似。 简单的键/值查找几乎是相同的……如果您想以这种方式使用MySQL。 显然,文档支持可带来巨大的生产力收益和巨大的性能优势。
使用自动分片... MongoDB以难以描述的方式更快。 开箱即用,通过适当的设计,您几乎可以线性扩展,而无需在代码中构建任何逻辑。
几乎每个驱动程序都内置了读/写拆分功能,大多数由10gen自己赞助或开发。
我之前已经对应用程序进行了扩展,并编写了读/写拆分代码,用于分片的分布式哈希,重新平衡了连续运行的作业,并将gzip添加到了mysql“ document”存储中。 啊。
它速度更快,因为它既简单又专注。 设计时要考虑到所有这些。 优先考虑商品硬件的规模。 RDBMS的优先级完全不同。
默认情况下,mongo不做任何索引; 也没有交易。 但是,如果将mysql表配置为未编制索引,然后打开自动提交,则不会看到巨大的速度差异。 将位写入磁盘仅需要一定的时间。
但是,mongo旨在轻松扩展。 使用分片,您可以水平扩展写操作并获得更好的性能,而无需使用主-主复制的复杂性。 使用副本集,您可以水平缩放阅读。 因此,我想说这是系统性能的提高,但是每个查询不一定更快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.