sql >> Database >  >> NoSQL >> MongoDB

Kan ik de bestaande index in MongoDB wijzigen zonder deze te laten vallen?

Er is geen manier om een ​​index te wijzigen zoals u beschrijft, en als dat zo was, denk ik dat de uitkomst in termen van prestaties vergelijkbaar zou zijn - hoe zou de database bijvoorbeeld de half aangemaakte/gewijzigde index gebruiken terwijl deze bewerking aan de gang was?

In plaats daarvan zou ik aanraden om de achtergrondoptie te gebruiken om de index op een enkel knooppunt te bouwen, als dat uw configuratie is - het zal langer duren maar zal uw normale werking niet zo veel hinderen. Als het klaar is, kunt u de oude index op uw gemak laten vallen.

Echter , als u een replicaset hebt (aanbevolen), moet u zich ervan bewust zijn dat het maken van een index (momenteel) altijd op de voorgrond op de secundaire plaats wordt gedaan. Als je wilt voorkomen dat je secundaire bestanden worden belast, volg dan de stappen die hier worden beschreven om een ​​lid één voor één uit te schakelen en de vereiste index op te bouwen voordat je weer bij de set aansluit:

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

Bijwerken

Achtergrondindex bouwt voort op secundaire versies vanaf release 2.6 (zie release-opmerkingen voor details). Dit wordt niet teruggezet naar eerdere versies, dus de bovenstaande opmerking geldt voor versies ouder dan 2.6.

Ten slotte, als algemene opmerking:indexen die op de achtergrond zijn gebouwd, zullen over het algemeen groter en minder efficiënt zijn dan die op de voorgrond, dus de bovenstaande methode kan nog steeds worden gebruikt.




  1. Wat is het grootste verschil tussen Redis en Membase?

  2. Overweeg de bovenstaande items opnieuw te bekijken of een bean van het type 'org.springframework.data.redis.core.RedisTemplate' in uw configuratie te definiëren

  3. Hoe mongodb te sorteren met pymongo

  4. Wanneer moet u de MongoDB-databaseverbinding in Nodejs sluiten