Gemäß der MongoDB-Dokumentation besteht im Allgemeinen keine Notwendigkeit, Indizes routinemäßig neu zu erstellen.
HINWEIS :Jegliche Ratschläge zur Speicherung werden mit MongoDB 3.0+ interessanter, das einen Plug-in-Speicher-Engine-API . Meine Kommentare unten beziehen sich speziell auf die standardmäßige MMAP-Speicher-Engine in MongoDB 3.0 und früher. WiredTiger und andere Speicher-Engines haben unterschiedliche Speicherimplementierungen für Daten und Indizes.
Es kann einige Vorteile haben, einen Index mit der MMAP-Speicher-Engine neu zu erstellen, wenn:
-
Ein Index verbraucht im Vergleich zu den Daten mehr Speicherplatz als erwartet. Hinweis:Sie müssen historische Daten und die Indexgröße überwachen, um eine Vergleichsbasis zu haben.
-
Sie möchten von einem älteren Indexformat auf ein neueres migrieren. Wenn eine Neuindizierung ratsam ist, wird dies in den Upgrade-Hinweisen erwähnt. Zum Beispiel führte MongoDB 2.0 signifikante Indexleistungsverbesserungen Daher enthalten die Versionshinweise eine vorgeschlagene Neuindizierung in das v2.0-Format nach dem Upgrade. In ähnlicher Weise führte MongoDB 2.6
2dsphereein (v2.0)-Indizes die ein anderes Standardverhalten haben (standardmäßig spärlich). Vorhandene Indizes werden nach Upgrades der Indexversion nicht neu erstellt; die Wahl, ob/wann ein Upgrade durchgeführt werden soll, bleibt dem Datenbankadministrator überlassen. -
Sie haben die
_idgeändert Format für eine Sammlung zu oder von einem monoton ansteigenden Schlüssel (z. B. ObjectID) zu einem zufälligen Wert. Das ist ein bisschen esoterisch, aber es gibt eine Indexoptimierung, die B-Tree-Buckets 90/10 (statt 50/50) aufteilt, wenn Sie_ideinfügen s, die immer größer werden (ref:SERVER-983 ). ). Wenn die Art Ihrer_ids erheblich ändert, kann es möglich sein, mit einer Neuindizierung einen effizienteren B-Baum zu erstellen.
Weitere Informationen zum allgemeinen B-Tree-Verhalten finden Sie unter:Wikipedia:B-tree
Visualisierung der Indexnutzung
Wenn Sie wirklich neugierig sind, ein bisschen mehr in die Interna des Index einzutauchen, gibt es einige experimentelle Befehle/Tools, die Sie ausprobieren können. Ich gehe davon aus, dass diese nur auf MongoDB 2.4 und 2.6 beschränkt sind: