Соотношение индекса / оперативной памяти MongoDB - PullRequest
29 голосов
/ 11 мая 2010

Я собираюсь принять MongoDB для нового проекта, и я выбрал его для гибкости, а не масштабируемости, поэтому буду запускать его на одной машине. Из документации и постов в Интернете я продолжаю читать, что все индексы находятся в оперативной памяти. Это просто не имеет смысла для меня, так как мои индексы будут легко больше, чем объем доступной оперативной памяти.

Может ли кто-нибудь поделиться некоторой информацией об отношении индекс / ОЗУ и что происходит, когда как отдельный индекс, так и все мои индексы превышают размер доступной ОЗУ?

Ответы [ 2 ]

29 голосов
/ 12 мая 2010

MongoDB хранит все возможные индексы в оперативной памяти. Они будут заменены на основе LRU. Вы часто будете видеть документацию, в которой предлагается хранить «рабочий набор» в памяти: если части индекса, к которым вы фактически обращаетесь, умещаются в памяти, все будет в порядке.

8 голосов
/ 26 июля 2011

Это размер рабочего набора плюс индексы MongoDB, которые в идеале должны постоянно находиться в ОЗУ, т. Е. Объем доступной ОЗУ в идеале должен быть не меньше размера рабочего набора, а также размера индексов и остальной части ОС ( Система) и другое программное обеспечение, работающее на той же машине, что и нужно. Если объем доступной оперативной памяти меньше этого, то происходит LRUing, и поэтому мы можем получить значительное замедление. Следует иметь в виду, что в индексе кешируются сегменты дерева, а не отдельные ключи индекса, т. Е. Если бы у нас было равномерное распределение ключей в индексе, в том числе для исторических данных, нам может потребоваться больше индекса в ОЗУ по сравнению с тем, когда мы составной индекс по времени плюс что-то еще. В последнем случае ключи в одном и том же сегменте btree обычно относятся к одной и той же эпохе, поэтому такого предостережения не происходит. Кроме того, мы должны помнить, что наши имена полей в BSON хранятся в записях (но не в индексе), поэтому, если мы испытываем нехватку памяти, они должны быть короткими.

Те, кто интересуется текущим использованием виртуальной памяти MongoDB (что, конечно, также касается оперативной памяти), могут взглянуть на состояние mongod.

@ см. http://www.markus -gattol.name / ws / mongodb.html # sec7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...