Enligt MongoDB-dokumentationen finns det i allmänhet inget behov av att rutinmässigt bygga om index.
OBS :Alla råd om lagring blir mer intressanta med MongoDB 3.0+, som introducerade en API för pluggbar lagringsmotor . Mina kommentarer nedan är specifikt med hänvisning till standard MMAP-lagringsmotorn i MongoDB 3.0 och tidigare. WiredTiger och andra lagringsmotorer har olika lagringsimplementationer för data och index.
Det kan finnas en viss fördel med att bygga om ett index med MMAP-lagringsmotorn om:
-
Ett index förbrukar en större mängd utrymme än förväntat jämfört med data. Obs! Du måste övervaka historiska data och indexstorlek för att få en baslinje för jämförelse.
-
Du vill migrera från ett äldre indexformat till ett nyare. Om en omindexering är tillrådlig kommer detta att nämnas i uppgraderingsanteckningarna. Till exempel introducerade MongoDB 2.0 betydande indexprestandaförbättringar a> så release notes inkluderar en föreslagen omindexering till v2.0-formatet efter uppgradering. På liknande sätt introducerade MongoDB 2.6
2dsphere
(v2.0) index som har ett annat standardbeteende (gles som standard). Befintliga index byggs inte om efter indexversionsuppgraderingar; valet av om/när att uppgradera lämnas till databasadministratören. -
Du har ändrat
_id
format för en samling till eller från en monotont ökande nyckel (t.ex. ObjectID) till ett slumpmässigt värde. Detta är lite esoteriskt, men det finns en indexoptimering som delar b-tree hinkar 90/10 (istället för 50/50) om du infogar_id
s som alltid ökar (ref:SERVER-983 ). Om arten av ditt_id
s ändras avsevärt kan det vara möjligt att bygga ett mer effektivt b-träd med ett omindex.
För mer information om allmänt B-träds beteende, se:Wikipedia:B-tree
Visualisera indexanvändning
Om du verkligen är nyfiken på att gräva lite mer i indexets interna delar, finns det några experimentella kommandon/verktyg du kan prova. Jag förväntar mig att dessa endast är begränsade till MongoDB 2.4 och 2.6: