处理重复查询时,MongoDB变得更快

时间:2017-08-16 18:13:06

标签: mongodb performance web

我正在使用MongoDB开发一个Web应用程序。我注意到一种现象,即当重复执行相同的查询时,处理速度会提升并最终收敛到某一点。就像查询集合中的所有文档一样,每个查询的时间使用量将 100000 ms - > 20000毫秒 - > 9000ms - > ... - > 500毫秒

我想知道速度提升背后的原因是什么?以及如何估计收敛点?

1 个答案:

答案 0 :(得分:1)

有很多原因,我可以给出一些观点。

首先,MongoDB能够为您的查询选择最佳索引。为此,MongoDB使用查询计划。但这项操作需要时间:

  

如果没有匹配的条目,则生成查询计划程序   试验期间的候选人评估计划。查询计划器   选择获胜计划,创建包含获胜的缓存条目   计划,并使用它来生成结果文档。

https://docs.mongodb.com/manual/core/query-plans/

INDEX应加载到内存以加快性能,这也需要时间。试着看看Touch:

https://docs.mongodb.com/manual/reference/command/touch/

  

touch命令将数据从数据存储层加载到内存中。   touch可以加载数据(即文档)索引或两个文档和   索引。

另一个原因,INDEX不适合内存以便知道这是否是你的情况也许你可以用totalIndexSize检查

https://docs.mongodb.com/manual/reference/method/db.collection.totalIndexSize/#db.collection.totalIndexSize

我更专注于改进查询规划方面,因为MongoDB并不是一直为你做出最好的决定。

我认为应该仔细评估所有这些主题,以避免性能下降。

祝你好运!