我已经注意到这个问题一段时间了,但还没有找到任何关于它的内部文档,或者如何缓解这个问题。这是对两个完全相同的查询的解释,一个接一个完成。
> db.derp.find().explain()
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 8418,
"nscannedObjects" : 8418,
"nscanned" : 8418,
"nscannedObjectsAllPlans" : 8418,
"nscannedAllPlans" : 8418,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 3,
"nChunkSkips" : 0,
"millis" : 3267,
"indexBounds" : {
},
"server" : ...
}
现在第二次运行:
> db.derp.find().explain()
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 8418,
"nscannedObjects" : 8418,
"nscanned" : 8418,
"nscannedObjectsAllPlans" : 8418,
"nscannedAllPlans" : 8418,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 6,
"indexBounds" : {
},
"server" : ...
}
这是查询速度的巨大差异,从 3.2 秒到 6 毫秒。我正在寻找有关这里正在进行的内部缓存的一些信息,以及是否有任何方法可以调整此缓存(为了保持缓存数据)。