私が知っているように、MongoDB はすべてのデータがメモリに収まる状況に最適化されています。そして、私が理解しているように、GridFS は標準コレクションとすべての標準ストレージ メソッドを使用します。それは...ですか?
大量のデータセット (私の場合は画像) を保存すると、現在のメモリ量が大きくなり、実際のデータがメモリから追い出されるということですか?
もしかしたら、MongoDB は GridFS コレクションの優先度を下げるほど賢いのでしょうか?
MongoDBは、メモリマップトファイルを使用してデータファイルを管理します。データを使用する場合、データはメモリに残ります。使用しない場合は、最終的にディスクにフラッシュされます(次に要求したときに読み戻されます)。すべてのデータを読み取る必要がある場合は、すべてをRAMに収める方がよいでしょう。そうしないと、システムが致命的なスワップスパイラルに陥る可能性があります(もちろん、負荷によって異なります)。
データを保存するだけであまり使用しない場合、MongoDBはメモリのごく一部しか使用しません。たとえば、私のプロジェクトの1つでは、データセットの合計サイズが300 GBを超え、mongoは800 MBのRAMしか使用しません(データをほとんど読み取らないため、書き込むだけです)。