2012-01-11 2 views
2

私が知っているように、MongoDBはすべてのデータがメモリに収まるように最適化されています。 GridFSが標準コレクションとすべての標準的なストレージメソッドを使用していることを理解しています。それは...ですか?GridFSと標準コレクション、メモリ使用量

大量のデータ(私の場合はイメージ)を格納すると、その現在のメモリ量が大きくなり、メモリから実際のデータが削除されますか?

多分、MongoDBはGridFSコレクションの優先度を低くするほどスマートでしょうか?

答えて

2

MongoDBは、メモリマップファイルを使用してデータファイルを管理します。データを使用すると、メモリに残ります。あなたがそれを使用しないと、最終的にディスクにフラッシュされます(そして、あなたが次回にそれを要求したときに読み返します)。すべてのデータを読み込む必要がある場合は、すべてRAMに収まるようにするか、システムが致命的なスワップスパイラルになる可能性があります(負荷に応じて変わります)。

データを保存するだけで十分でない場合、MongoDBはわずかなメモリしか使用しません。たとえば、私のプロジェクトの1つでは、データセットの合計サイズは300 GBを超え、mongoは800 MBのRAMしか必要としません(ほとんどの場合、データは読み込まず、書き込むだけです)。

+1

この画像のほとんどが非常に頻繁に使用されるという問題:(私が間違っていて、いくつかの統計情報を収集する必要があるかもしれないので、私はこのケースの最適化が望まれているのですが、私はあなたの答えを、ありがとう。 –