Ответ 1
О Монго
MongoDB использует файлы с отображением памяти.
Это означает, что операционная система по существу контролирует то, что выгружено в и из памяти (с диска и с диска).
Правила
Если ваши индексы + рабочий набор превышают объем памяти, последние недавно использованные страницы (разделы памяти) будут сброшены на диск. Это оставляет только самые последние использованные данные, которые все еще пригодны для хранения в памяти.
Ваша операционная система контролирует это.
Пока вы испытываете ужасную производительность, если ваш настоящий рабочий набор и индексы не вписываются в память, на практике размер одного рабочего набора (горячие данные) намного меньше, чем их общий набор данных.
Если вы не нарушаете это правило, вы должны иметь отличную производительность большую часть времени, даже если ваши индексы + общие данные могут превышать общую доступную память.
Как это работает
Если выполняется запрос, который нуждается в данных, которые не находятся в памяти, он будет выгружен в память (извлечен с диска), и произойдет удар производительности.
Примечание: это по существу ситуация, когда база данных сначала запускается (холодно).
Ничего не стоит в памяти, при этом возникают сбои страниц, когда требуются данные, и данные пересылаются в память по мере необходимости. Когда у вас закончилась нехватка памяти, последние недавно использованные страницы (куски) очищаются от памяти в пользу более горячих (более недавно полученных) данных.
Также стоит упомянуть, что поскольку индексы используются постоянно и, таким образом, всегда используются недавно, они практически никогда не выгружаются.