mongo でこの問題にしばらく気付きましたが、それに関する内部ドキュメントや、この問題を軽減する方法は見つかりませんでした。まったく同じクエリのうちの 2 つについて説明します。一方は他方の直後に実行されます。
> 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" : ...
}
2回目の実行:
> 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 ミリ秒に大幅に短縮されたことを示しています。ここで行われているこの内部キャッシングに関する情報を探しています。また、このキャッシュを調整する方法があるかどうか (そのデータをキャッシュし続けるために) を探しています。