У меня есть коллекция из 10 миллионов документов, в каждом из которых есть четыре простых текстовых поля. Монго занимает около 5 минут, чтобы построить индекс для поля в первый раз (т. е. когда я запускаю команду sureIndex из оболочки Mongo).
Я знаю, что индексы Mongo представляют собой структуры данных B-дерева, хранящиеся в памяти. Но когда я выключаю и перезапускаю mongod, индексы действуют мгновенно (т.е.) Запросы, которые выполняются сразу после запуска сервера, используют индекс.
Хотелось бы знать:
1. Когда эти индексы синхронизируются с файлом на диске?
2. Когда такие индексы будут загружены обратно в память, если перезапустить mongod?
Mongo строит индекс в следующие два этапа (это можно увидеть в логе mongod). Есть идеи, что делается на каждом из этих этапов.
1. Ход выполнения внешней сортировки
2. Ход выполнения B-дерева снизу вверх