sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan jag ändra befintligt index i MongoDB utan att ta bort det?

Det finns inget sätt att ändra ett index som du beskriver, och om det fanns, tror jag att resultatet i termer av prestanda skulle vara liknande - hur skulle databasen använda det halva skapade/ändrade indexet medan den här operationen pågick till exempel?

Istället skulle jag rekommendera att använda bakgrundsalternativet för att bygga indexet på en enda nod, om det är din konfiguration - det kommer att ta längre tid men kommer inte att störa din normala drift lika mycket. När det är klart kan du släppa det gamla indexet när du vill.

Men , om du har en replikuppsättning (rekommenderas) bör du vara medveten om att indexskapandet alltid (för närvarande) görs i förgrunden på sekundären. Om du vill undvika belastning på dina sekundärer, bör du följa stegen som beskrivs här för att ta ut en medlem en i taget och bygga det index som krävs innan du går med i setet igen:

http://docs.mongodb.org/manual/administration/indexes/#index-building-replica-sets

Uppdatera

Bakgrundsindex som bygger på sekundärer kommer att vara möjliga från och med version 2.6 (se utgåvan för detaljer). Detta kommer inte att backporteras till tidigare versioner, så ovanstående notering kommer att gälla för versioner före 2.6.

Slutligen, Som en allmän notering kommer index som byggs i bakgrunden i allmänhet att vara större och mindre effektiva än de som byggs i förgrunden, så metodiken ovan kommer fortfarande att ha sina användningsområden.




  1. Redis:Summan av SCORES i sorterad uppsättning

  2. Mongoose befolka efter räddning

  3. Hur implementerar man redis pubsub timeout-funktion?

  4. Vilken är den mest effektiva dokumentorienterade databasmotorn för att lagra tusentals medelstora dokument?