Според документацията на MongoDB, обикновено няма нужда от рутинно повторно изграждане на индекси.
ЗАБЕЛЕЖКА :Всеки съвет относно съхранението става по-интересен с MongoDB 3.0+, който въведе API на модулен механизъм за съхранение . Моите коментари по-долу са конкретно по отношение на механизма за съхранение на MMAP по подразбиране в MongoDB 3.0 и по-стари версии. WiredTiger и други машини за съхранение имат различни реализации за съхранение на данни и индекси.
Може да има известна полза от повторното изграждане на индекс с машината за съхранение MMAP, ако:
-
Индексът заема по-голямо от очакваното количество пространство в сравнение с данните. Забележка:трябва да наблюдавате историческите данни и размера на индекса, за да имате базова линия за сравнение.
-
Искате да мигрирате от по-стар формат на индекс към по-нов. Ако е препоръчително повторно индексиране, това ще бъде споменато в бележките за надстройка. Например MongoDB 2.0 въведе значителни подобрения в производителността на индекса така че бележките по изданието включват предложение за повторно индексиране към формат v2.0 след надграждане. По подобен начин MongoDB 2.6 въведе
2dsphere
(v2.0) индекси които имат различно поведение по подразбиране (разредени по подразбиране). Съществуващите индекси не се възстановяват след надграждане на версията на индекса; изборът дали/кога да се надстрои е оставен на администратора на базата данни. -
Променихте
_id
формат за колекция към или от монотонно нарастващ ключ (напр. ObjectID) към произволна стойност. Това е малко езотерично, но има оптимизация на индекса, която разделя кофите на b-дървото 90/10 (вместо 50/50), ако вмъквате_id
s, които винаги се увеличават (ref:SERVER-983 ). Ако естеството на вашия_id
s промени значително, може да е възможно да се изгради по-ефективно b-дърво с повторно индексиране.
За повече информация относно общото поведение на B-tree вижте:Wikipedia:B-tree
Визуализиране на използването на индекс
Ако сте наистина любопитни да се заровите малко повече във вътрешността на индекса, има някои експериментални команди/инструменти, които можете да опитате. Очаквам те да са ограничени само до MongoDB 2.4 и 2.6: