2012-01-11 2 views
2

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

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

Возможно, MongoDB достаточно умен, чтобы уделять меньше внимания коллекции GridFS?

ответ

2

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

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

+1

Проблема в том, что большинство этих изображений будут использоваться очень часто :(Может быть, я ошибаюсь, и мне нужно собрать некоторую статистику. Именно поэтому я спрашиваю, я надеялся, что в этом случае есть оптимизация. Я получил ваш ответ, спасибо. –