MongoDB与MySQL相比要慢得多 – 基本的find()方法

这是我的第一个Stackoverflow的问题,但我很长时间的读者。

我正在做一些家庭项目,我试图比较MongoDB和MySQL的速度。 令人惊讶的是,即使使用非常基本的表,MongoDB几乎慢了5倍。 我读到他们几乎是一样的速度,但它让我思考。

有人可以向我解释为什么会发生这种情况?

MongoDB代码:

app.get('/mongodb', function(req, res, next) { var time = process.hrtime(); User.find(function(err, users) { if (err) return next(err); var diff = process.hrtime(time); if(diff[0] == 0) { res.send(diff[1].toString()); } else { res.send(diff[0]+"."+diff[1]); } }); }); 

MySQL代码:

 app.get('/mysql', function(req, res, next) { var time = process.hrtime(); mysql.query("SELECT * FROM users", function(err, results) { if (err) throw err; var diff = process.hrtime(time); if(diff[0] == 0) { res.send(diff[1].toString()); } else { res.send(diff[0]+"."+diff[1]); } }); }); 

MySQL返回:1.52201348

MongoDB返回:9.746405351

架构是:

 User { id integer, name string, email string, } 

有大约50万用户。

索引是在MongoDB中的_id和MySQL中的id。

MongoDB shell版本:2.4.6

MySQL版本:5.5.37

有任何想法吗? 任何帮助或build议将不胜感激。

问候,Wnzl。

我认为这里的主要问题是基准testing应该总是针对一个特殊的用例。 他们以相同的速度执行的假设是非常不确定的。

所以你在这里检查的用例是由你的例子定义的,意思是获取一个模式的所有实体。 即使用例非常简单,结果的意义也不会。

MongoDB和SQL是针对不同用例devise的数据库系统。 这意味着每个系统都针对不同的查询进行了优化。 这是我认为你应该深入挖掘不同表演的原因。

还要考虑到,基于帽子,查询一个模式的所有实体,或许可以用多个但总体上更快的查询来实现。 最后考虑引导,caching和索引机制,可能由于对系统特定用例的优化而完全不同。