Каковы требования к оперативной памяти между MongoDB и MySQL для одного и того же набора данных и использования? (т.е. по одному и тому же сценарию, сколько оперативной памяти будет использовать каждый из них)?
Это правда, что MongoDB хранит полную базу данных в оперативной памяти?
Основная проблема Mongo для больших наборов данных заключается в том, что Mongo использует файлы с отображением памяти. Невозможно ограничить количество оперативной памяти, которую Mongo будет пытаться использовать на машине. Таким образом, он в основном ожидает все ресурсы машины, выделенной коробки. Это проблема, только если ваши данные большие, особенно когда ваши индексы больше, чем RAM. Чтобы ответить на ваш вопрос о данных, MongodDB на самом деле попытается сохранить индексы только в ОЗУ.
mongo будет пытаться всегда хранить всю базу данных в ОЗУ .. но поскольку ОС требует ОЗУ для других приложений, она будет выпускать части, которые использует mongo.
Монго должен хранить в оперативной памяти индексы, чтобы они работали быстро.
В моем приложении mongo использует намного меньше оперативной памяти, чем mysql, но это действительно зависит от того, сколько у вас индексов и размера вашего набора данных.
У нас небольшой кластер (2 шарда), и основные моменты, которые мы получили:
1) MongoDB хранит индексы в ОЗУ и как можно больше данных (как указано выше). Да, это правда. Лучший способ - хранить ВСЕ данные в ОЗУ. (у нашего проекта около 1 миллиона уникальных пользователей в день и около 30 миллионов запросов => хранение всех данных в оперативной памяти, что так важно для нас).
2) Если размер вашей оперативной памяти закончился - пора разделить ваш сервер mongo (к счастью, в MongoDB его очень легко настроить)
Основное хранилище, которое мы используем, составляет около 40 ГБ данных и 10 ГБ индексов. Работает на двух шардах по 32 ГБ каждый.