View a markdown version of this page

Erstellung eines Indexes - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellung eines Indexes

Für die Erstellung von Indizes in Amazon DocumentDB müssen eine Reihe von Entscheidungen getroffen werden:

  • Wie schnell muss es abgeschlossen werden?

  • Kann während des Builds auf die Sammlung nicht zugegriffen werden?

  • Wie viel Rechenleistung einer Instanz kann dem Build zugewiesen werden?

  • Welcher Indextyp sollte erstellt werden?

Dieser Abschnitt hilft Ihnen bei der Beantwortung dieser Fragen und enthält die Befehle und Überwachungsbeispiele, um einen Amazon DocumentDB-Index für Ihre instanzbasierte Clustersammlung zu erstellen.

Richtlinien

Die folgenden Richtlinien beinhalten grundlegende Grenzwerte und Kompromisse bei der Konfiguration bei der Erstellung neuer Indizes:

  • Unterstützung für Amazon DocumentDB-Versionen — Während die Single-Worker-Indizierung in allen Amazon DocumentDB-Versionen unterstützt wird, wird die Indexierung mehrerer Worker nur in den Amazon DocumentDB-Versionen 4.0 und 5.0 unterstützt.

  • Leistungseinbußen — Eine Erhöhung der Anzahl der Worker im Indexerstellungsprozess erhöht die CPU-Auslastung und die Lese-I/O auf der primären Instance Ihrer Amazon DocumentDB-Datenbank. Die Ressourcen, die für die Erstellung eines neuen Indexes benötigt werden, stehen Ihrem laufenden Workload nicht zur Verfügung.

  • Elastische Cluster — Parallele Indizierung wird auf elastischen Amazon DocumentDB-Clustern nicht unterstützt.

  • Maximale Anzahl an Workern — Die maximale Anzahl von Workern, die Sie konfigurieren können, hängt von der Größe Ihrer primären Instance in Ihrem Datenbank-Cluster ab. Dies ist die Hälfte der Gesamtzahl der vCPUs auf der primären Instance Ihres Datenbank-Clusters. Beispielsweise können Sie maximal 32 Worker auf einer db.r6g.16xlarge-Instance mit 64 vCPUs ausführen.

Anmerkung

Die parallele Indexerstellung wird auf Instanzen ab 2xlarge unterstützt.

  • Mindestanzahl an Arbeitern — Die Mindestanzahl von Arbeitern, die Sie konfigurieren können, ist einer. Die Standardeinstellung für die Indexerstellung auf instanzbasierten Clustern ist zwei Worker. Sie können die Anzahl der Worker jedoch auf einen reduzieren, indem Sie die Option „Worker-Threads“ verwenden. Dadurch wird der Prozess mit einem einzigen Worker ausgeführt.

  • Indexkomprimierung — Amazon DocumentDB unterstützt keine Indexkomprimierung. Die Datengrößen für Indizes sind möglicherweise größer als bei Verwendung anderer Optionen.

  • Indizierung mehrerer Sammlungen — Die Hälfte der vCPUs auf der primären Instanz Ihres Datenbank-Clusters kann für konfigurierte Worker verwendet werden, die Indexerstellung für mehrere Sammlungen durchführen.

  • Indextypen — Eine Liste der unterstützten Indextypen finden Sie Indextypen auf Amazon DocumentDB.

Typen zum Erstellen von Indizes

Die vier Typen von Indexerstellungen sind:

  • Vordergrund: Die Erstellung des Vordergrundindexes blockiert alle anderen Datenbankoperationen für die Sammlung, für die der Index erstellt wurde, bis die Indexerstellung abgeschlossen ist. Der Vordergrund-Build von Amazon DocumentDB besteht aus fünf Phasen.

  • Vordergrund (einzigartig): Die Erstellung eines Vordergrundindexes für ein einzelnes Dokument (eindeutig) blockiert andere Datenbankoperationen wie reguläre Vordergrund-Builds. Im Gegensatz zum grundlegenden Vordergrund-Build verwendet der einzigartige Build eine zusätzliche Stufe (Sortierung von Schlüsseln 2), um nach doppelten Schlüsseln zu suchen. Der (einzigartige) Vordergrund-Build besteht aus sechs Stufen.

  • Hintergrund: Bei der Indexerstellung im Hintergrund können andere Datenbankoperationen im Vordergrund ausgeführt werden, während der Index erstellt wird. Der Amazon DocumentDB-Hintergrund-Build besteht aus acht Phasen.

  • Hintergrund (einzigartig): Bei der Erstellung eines (eindeutigen) Hintergrundindexes für ein einzelnes Dokument können andere Datenbankoperationen im Vordergrund ausgeführt werden, während der Index erstellt wird. Im Gegensatz zur grundlegenden Erstellung im Hintergrund verwendet der eindeutige Build eine zusätzliche Phase (Sortierung der Schlüssel 2), um nach doppelten Schlüsseln zu suchen. Der (einzigartige) Hintergrund-Build besteht aus neun Stufen.

Der standardmäßige Indexerstellungstyp ist Vordergrund.

Um einen Index im Hintergrund zu erstellen, fügen Sie beim Erstellen des Indexes den Parameter „background“: true hinzu.

Erste Schritte

Verwenden Sie den Befehl createIndexes, um mit der Indexerstellung für eine Sammlung zu beginnen. Standardmäßig führt der Befehl zwei parallele Worker aus, wodurch die Geschwindigkeit der Indexerstellung um das Zweifache erhöht wird.

Der folgende Befehlsvorgang veranschaulicht beispielsweise, wie ein Index für das Feld „user_name“ in einem Dokument erstellt und die Geschwindigkeit des Indizierungsprozesses auf vier Worker erhöht wird:

  1. Erstellen Sie Indizes im Hintergrund mithilfe von zwei parallelen Workern im Cluster:

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "background":true }]})
  2. Um die Geschwindigkeit der Indexerstellung zu optimieren, können Sie die Anzahl der Worker mithilfe der Option „Worker-Threads“ („workers“:<number>) im Befehl db.runCommand createIndexes angeben.

    Erhöhen Sie die Geschwindigkeit des Prozesses auf vier parallele Worker:

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "workers":4}]})
Anmerkung

Je höher die Anzahl der Worker ist, desto schneller schreitet die Indexerstellung voran. Je höher jedoch die Anzahl der Worker steigt, desto höher steigt die Last auf den vCPUs und Read I/O Ihrer primären Instance. Stellen Sie sicher, dass Ihr Cluster ausreichend bereitgestellt ist, um die erhöhte Belastung zu bewältigen, ohne andere Workloads zu beeinträchtigen.

Fortschrittsstatus bei der Indizierung

Bei der Indexerstellung werden Sammlungen initialisiert, gescannt, Schlüssel sortiert und schließlich Schlüssel mithilfe eines Indexgenerators eingefügt. Der Prozess umfasst bis zu sechs Stufen, wenn Sie ihn im Vordergrund ausführen, und bis zu neun Stufen, wenn Sie ihn im Hintergrund ausführen. Sie können Statuskennzahlen wie den Prozentsatz der Fertigstellung, die Gesamtzahl der gescannten Speicherblöcke, sortierte Schlüssel und eingefügte Schlüssel schrittweise anzeigen.

Überwachen Sie den Fortschritt des Indizierungsprozesses, indem Sie den Befehl db.CurrentOp () in der Mongo-Shell verwenden. Ein hundertprozentiger Abschluss der letzten Phase zeigt, dass alle Indizes erfolgreich erstellt wurden:

db.currentOp({"command.createIndexes": { $exists : true } })
Anmerkung

Das Anzeigen des Fortschritts der Indizierung wird nur in Amazon DocumentDB 5.0 unterstützt.

Phasen der Indexerstellung

Stage Vordergrund Vordergrund (einzigartig) Hintergrund Hintergrund (einzigartig)
Initialisieren 1 1 1 1
Index erstellen: initialisieren 2 2 2 2
Gebäudeindex: Sammlung wird gescannt 3 3 3 3
Gebäudeindex: Schlüssel 1 sortieren 4 4 4 4
Gebäudeindex: Schlüssel 2 sortieren 5 5
Gebäudeindex: Schlüssel einfügen 5 6 5 6
validieren: Index scannen 6 7
validieren: Tupel sortieren 7 8
validieren: Sammlung scannen 8 9
  • initialisieren — createIndex bereitet den Index-Builder vor. Diese Phase sollte sehr kurz sein.

  • Index erstellen: Initialisieren — Der Indexgenerator bereitet sich auf die Erstellung des Indexes vor. Diese Phase sollte sehr kurz sein.

  • Index erstellen: Sammlung scannen — Der Indexgenerator führt einen Sammlungsscan durch, um Indexschlüssel zu sammeln. Die Maßeinheit ist „Blöcke“.

Anmerkung

Wenn mehr als ein Worker für die Indexerstellung konfiguriert ist, wird dies in dieser Phase angezeigt. Die Phase „Erfassung scannen“ ist die einzige Phase, in der während der Indexerstellung mehrere Worker verwendet werden. In allen anderen Phasen wird ein einzelner Worker angezeigt.

  • Index erstellen: Schlüssel sortieren 1 — Der Indexgenerator sortiert die gesammelten Indexschlüssel. Die Maßeinheit ist „Schlüssel“.

  • Index erstellen: Schlüssel sortieren 2 — Der Indexgenerator sortiert die gesammelten Indexschlüssel, die toten Tupeln entsprechen. Diese Phase existiert nur für die Erstellung eines eindeutigen Indexes. Die Maßeinheit ist „Schlüssel“.

  • Index erstellen: Schlüssel einfügen — Der Indexgenerator fügt Indexschlüssel in den neuen Index ein. Die Maßeinheit ist „Schlüssel“.

  • validieren: Index scannen — CreateIndex durchsucht den Index, um Schlüssel zu finden, die validiert werden müssen. Die Maßeinheit ist „Blöcke“.

  • validieren: Tupel sortieren — createIndex sortiert die Ausgabe der Index-Scan-Phase.

  • Validieren: Sammlung wird gescannt — CreateIndex durchsucht die Sammlung, um die Indexschlüssel zu überprüfen, die in den beiden vorherigen Phasen gefunden wurden. Die Maßeinheit ist „Blöcke“.

Beispiel für die Ausgabe der Indexerstellung

Im folgenden Ausgabebeispiel (Erstellung des Vordergrundindexes) wird der Status der Indexerstellung angezeigt. Das Feld „msg“ fasst den Fortschritt des Builds zusammen, indem es die Phase und den Prozentsatz der Fertigstellung des Builds angibt. Das Feld „Workers“ gibt die Anzahl der Worker an, die in dieser Phase der Indexerstellung verwendet wurden. Im Feld „Fortschritt“ werden die tatsächlichen Zahlen angezeigt, anhand derer der Prozentsatz der Fertigstellung berechnet wurde.

Anmerkung

Die Felder IndexBuildName „current“, „msg“ und „progress“ werden in Amazon DocumentDB Version 4.0 nicht unterstützt.

{ "inprog" : [{ … "command": { "createIndexes": "test", "indexes": [{ "v": 2, "key": { "user_name": 1 }, "name": "user_name_1" }], "lsid": { "id": UUID("094d0fba-8f41-4373-82c3-7c4c7b5ff13b") }, "$db": "test" }, "currentIndexBuildName": user_name_1, "msg": "Index Build: building index number_1, stage 6/6 building index: 656860/1003520 (keys) 65%", "workers": 1, "progress": { "done": 656861, "total": 1003520 }, … ], "ok" : 1 }

Ressourcen zur Fehlerbehebung

In den folgenden Ressourcen finden Sie Informationen zur Behebung von Problemen bei der Indexerstellung: