MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Kann ich einen vorhandenen Index in MongoDB ändern, ohne ihn zu löschen?

Es gibt keine Möglichkeit, einen Index so zu ändern, wie Sie es beschreiben, und wenn dies der Fall wäre, wäre das Ergebnis in Bezug auf die Leistung ähnlich - wie würde die Datenbank beispielsweise den halb erstellten/geänderten Index verwenden, während dieser Vorgang ausgeführt wird?

Stattdessen würde ich empfehlen, die Hintergrundoption zu verwenden, um den Index auf einem einzelnen Knoten zu erstellen, wenn dies Ihre Konfiguration ist - es wird länger dauern, aber Ihren normalen Betrieb nicht so sehr beeinträchtigen. Sobald es fertig ist, können Sie den alten Index nach Belieben löschen.

Allerdings , wenn Sie einen Replikatsatz haben (empfohlen), sollten Sie sich darüber im Klaren sein, dass die Indexerstellung immer (derzeit) im Vordergrund auf dem sekundären ausgeführt wird. Wenn Sie die Belastung Ihrer Secondaries vermeiden möchten, sollten Sie die hier beschriebenen Schritte befolgen, um ein Mitglied einzeln herauszunehmen und den erforderlichen Index zu erstellen, bevor Sie sich wieder dem Set anschließen:

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

Aktualisieren

Hintergrundindexaufbauten auf Secondaries sind ab Version 2.6 möglich (siehe Versionshinweise für Details). Dies wird nicht auf frühere Versionen zurückportiert, daher gilt der obige Hinweis für Versionen vor 2.6.

Abschließend gilt als allgemeine Anmerkung, dass im Hintergrund erstellte Indizes im Allgemeinen größer und weniger effizient sind als die im Vordergrund erstellten, sodass die obige Methodik immer noch ihren Nutzen hat.