GridFS и стандартные коллекции, использование памяти - PullRequest
2 голосов
/ 11 января 2012

Как я знаю, MongoDB оптимизирован для ситуации, когда все данные помещаются в память. И, как я понял, GridFS использует стандартную коллекцию и все стандартные методы хранения. Это так?

Означает ли это, что, сохраняя большой набор данных (в моем случае изображения), который больше текущего объема памяти, он вытеснит мои реальные данные из памяти?

Может быть, MongoDB достаточно умен, чтобы отдавать меньший приоритет коллекции GridFS?

1 Ответ

2 голосов
/ 11 января 2012

MongoDB использует отображенные в памяти файлы для управления своими файлами данных. Если вы используете данные, они останутся в памяти. Если вы не используете его, он в конечном итоге будет записан на диск (и будет прочитан, когда вы запросите его в следующий раз). Если вам нужно прочитать все ваши данные, вам лучше разместить их в ОЗУ, иначе ваша система может попасть в смертельно опасную спираль обмена (конечно, зависит от вашей нагрузки).

Если вы просто храните данные и мало с ними работаете, MongoDB будет использовать только часть памяти. Например, в одном из моих проектов общий размер набора данных превышает 300 ГБ, а mongo занимает только 800 МБ ОЗУ (потому что я почти не читаю данные, только пишу их).

...