sql >> Database teknologi >  >> NoSQL >> MongoDB

Kan jeg ændre eksisterende indeks i MongoDB uden at droppe det?

Der er ingen måde at ændre et indeks på, som du beskriver, og hvis der var, tror jeg, at resultatet med hensyn til ydeevne ville være ens - hvordan ville databasen bruge det halvt oprettede/ændrede indeks, mens denne operation foregik for eksempel?

I stedet vil jeg anbefale at bruge baggrundsindstillingen til at bygge indekset på en enkelt node, hvis det er din konfiguration - det vil tage længere tid, men vil ikke forstyrre din normale drift så meget. Når det er færdigt, kan du droppe det gamle indeks i ro og mag.

Men , hvis du har et replikasæt (anbefales), skal du være opmærksom på, at oprettelse af indeks altid (i øjeblikket) udføres i forgrunden på den sekundære. Hvis du vil undgå belastning på dine sekundære, bør du følge de trin, der er skitseret her for at tage et medlem ud et ad gangen og opbygge det nødvendige indeks, før du tilslutter dig sættet igen:

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

Opdater

Baggrundsindeks, der bygger på sekundære, vil være mulige fra og med 2.6-udgivelsen (se releasenotes for detaljer). Dette vil ikke blive backporteret til tidligere versioner, så ovenstående note vil være sandt for versioner før 2.6.

Som en generel bemærkning vil indekser bygget i baggrunden generelt være større og mindre effektive end dem der er bygget i forgrunden, så metoden ovenfor vil stadig have sine anvendelser.




  1. PHP kan ikke finde MongoDB-driveren

  2. forskel mellem aggregat ($match) og find, i MongoDB?

  3. mongodb aggregering php

  4. Returner resultatet kun som en matrix af værdier