Индекс Mongod — память и файл

У меня есть коллекция из 10 миллионов документов, в каждом из которых есть четыре простых текстовых поля. Монго занимает около 5 минут, чтобы построить индекс для поля в первый раз (т. е. когда я запускаю команду sureIndex из оболочки Mongo).

Я знаю, что индексы Mongo представляют собой структуры данных B-дерева, хранящиеся в памяти. Но когда я выключаю и перезапускаю mongod, индексы действуют мгновенно (т.е.) Запросы, которые выполняются сразу после запуска сервера, используют индекс.

Хотелось бы знать:
1. Когда эти индексы синхронизируются с файлом на диске?
2. Когда такие индексы будут загружены обратно в память, если перезапустить mongod?

Mongo строит индекс в следующие два этапа (это можно увидеть в логе mongod). Есть идеи, что делается на каждом из этих этапов.
1. Ход выполнения внешней сортировки
2. Ход выполнения B-дерева снизу вверх


person Shree    schedule 08.10.2013    source источник


Ответы (1)


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

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

person Thilo    schedule 08.10.2013