Podle dokumentace MongoDB obecně není potřeba indexy rutinně přestavovat.
POZNÁMKA :Jakékoli rady ohledně úložiště se stanou zajímavějšími s MongoDB 3.0+, které představilo rozhraní API pro zásuvné úložiště . Mé komentáře níže se konkrétně týkají výchozího úložiště MMAP v MongoDB 3.0 a dřívějších. WiredTiger a další moduly úložiště mají různé implementace úložiště pro data a indexy.
Přestavba indexu pomocí úložiště MMAP může přinést určité výhody, pokud:
-
Index spotřebovává větší než očekávané množství místa ve srovnání s daty. Poznámka:Musíte sledovat historická data a velikost indexu, abyste měli základní linii pro srovnání.
-
Chcete migrovat ze staršího formátu indexu na novější. Pokud je reindexace vhodná, bude to uvedeno v poznámkách k upgradu. MongoDB 2.0 například zavedlo významné vylepšení výkonu indexu takže poznámky k verzi obsahují navrhovanou reindexaci na formát v2.0 po aktualizaci. Podobně MongoDB 2.6 představilo
2dsphere
(v2.0) indexy které mají jiné výchozí chování (ve výchozím nastavení řídké). Stávající indexy nejsou po upgradech verzí indexu znovu sestavovány; volba zda/kdy upgradovat je ponechána na správci databáze. -
Změnili jste
_id
formát pro kolekci do nebo z monotónně rostoucího klíče (např. ObjectID) na náhodnou hodnotu. Je to trochu esoterické, ale existuje optimalizace indexu, která rozděluje skupiny b-stromu 90/10 (místo 50/50), pokud vkládáte_id
s, které se neustále zvyšují (ref:SERVER-983 ). Pokud je povaha vašeho_id
se výrazně změní, může být možné vytvořit efektivnější b-strom pomocí reindexace.
Další informace o obecném chování B-stromu naleznete na:Wikipedie:B-strom
Vizualizace využití indexu
Pokud jste opravdu zvědaví trochu více se ponořit do vnitřních částí indexu, existují některé experimentální příkazy/nástroje, které můžete vyzkoušet. Očekávám, že jsou omezeny pouze na MongoDB 2.4 a 2.6: