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.
Fehlerbehebung bei Indizes
Die folgenden Themen erläutern, was zu tun ist, wenn Ihr Index oder Ihr Indexaufbau im Hintergrund fehlschlägt.
Themen
Die Indexerstellung schlägt fehl
Amazon DocumentDB verwendet lokalen Speicher auf einer Instance als Teil des Indexerstellungsprozesses. Sie können diese Festplattennutzung mithilfe der FreeLocalStorage CloudWatch Metrik () CloudWatch -> Metrics -> DocDB -> Instance Metrics
überwachen. Wenn ein Indexaufbau den gesamten lokalen Festplattenspeicherplatz verbraucht und fehlschlägt, erhalten Sie eine Fehlermeldung. Wenn Sie Daten zu Amazon DocumentDB migrieren, empfehlen wir Ihnen, zuerst Indizes zu erstellen und dann die Daten einzufügen. Weitere Informationen zu Migrationsstrategien und zum Erstellen von Indizes finden Sie Migration zu Amazon DocumentDB in der Amazon DocumentDB-Dokumentation und im Blog: Migrieren Sie mithilfe der Offline-Methode von MongoDB zu Amazon DocumentDB
Wenn beim Erstellen von Indizes auf einem vorhandenen Cluster die Indexerstellung länger dauert als erwartet oder fehlschlägt, empfehlen wir, dass Sie die Instance hochskalieren, um den Index zu erstellen, und dann, nachdem der Index erstellt wurde, wieder herunterskalieren. Amazon DocumentDB ermöglicht Ihnen die schnelle Skalierung von Instance-Größen innerhalb von Minuten mit dem AWS Management Console oder dem AWS CLI. Weitere Informationen finden Sie unter Instanzklassen verwalten. Bei der sekundengenauen Instance-Preisgestaltung zahlen Sie auf die Sekunde genau nur für die Ressourcen, die Sie verwenden.
Latenzprobleme und Fehler bei der Indexerstellung im Hintergrund
Index-Builds im Hintergrund in Amazon DocumentDB werden erst gestartet, wenn alle Abfragen auf der primären Instance, die vor der Initiierung der Indexerstellung gestartet wurden, vollständig ausgeführt wurden. Wenn es eine lang andauernde Abfrage gibt, werden die Index-Builds im Hintergrund blockiert, bis die Abfrage abgeschlossen ist. Daher kann es länger dauern als erwartet, bis sie abgeschlossen ist. Dies gilt auch dann, wenn Sammlungen leer sind.
Index-Builds im Vordergrund zeigen nicht dasselbe Blockierungsverhalten. Stattdessen wird bei Index-Builds im Vordergrund die Sammlung exklusiv gesperrt, bis die Indexerstellung abgeschlossen ist. Um Indizes für eine leere Sammlung zu erstellen und Blockierungen bei Abfragen mit langer Laufzeit zu vermeiden, empfehlen wir daher, Index-Builds im Vordergrund zu verwenden.
Anmerkung
Amazon DocumentDB lässt zu, dass zu einem bestimmten Zeitpunkt nur ein Hintergrundindex für eine Sammlung erstellt wird. Wenn DDL (Data Definition Language) Operationen wie createIndex()
oder dropIndex()
während eines Indexaufbaus im HIntergrund in derselben Sammlung auftreten, schlägt der Aufbau des Hintergrundindex fehl.
Aufblähung des Datenbankindexes
Amazon DocumentDB verwendet Multi-Version Concurrency Control (MVCC), um gleichzeitige Transaktionen zu verwalten. Wenn Dokumente gelöscht oder aktualisiert werden, verbleiben ihre vorherigen Versionen als „tote“ Versionen in Sammlungen und Indizes. Durch den Garbage-Collection-Prozess wird automatisch Speicherplatz aus diesen toten Versionen für future Operationen zurückgewonnen.
Ein aufgeblähter Index tritt auf, wenn die Indizes einer Sammlung aufgrund der Anhäufung toter oder veralteter Indexeinträge oder der Fragmentierung innerhalb der Seiten größer werden. Der angegebene Prozentsatz entspricht der Menge an Indexspeicher, die von future Indexeinträgen verwendet werden kann. Diese Aufblähung beansprucht Speicherplatz sowohl im Puffercache als auch im Speicher. Wenn Sie den Bloat entfernen möchten, müssen Sie die Indizes neu erstellen.
Beispiel
Führen Sie den folgenden Befehl aus, um den ungenutzten Speicherplatz für Ihren Index zu ermitteln:
db.coll.aggregate({$indexStats:{}});
Das Ergebnis sieht in etwa so aus:
{ "name" : "_id_", "key" : { "_id" : 1 }, "host" : "devbox-test.localhost.a2z.com:27317", "size" : NumberLong(827392), "accesses" : { "ops" : NumberLong(40000), "docsRead" : NumberLong(46049), "since" : ISODate("2025-04-03T21:44:51.251Z") }, "cacheStats" : { "blksRead" : NumberLong(264), "blksHit" : NumberLong(140190), "hitRatio" : 99.8121 }, "unusedStorageSize" : { "unusedSizeBytes" :
409600
, "unusedSizePercent" :49.51
} }
Mit dem reIndex
Befehl können Sie Indizes ohne Ausfallzeiten neu erstellen. Dazu ist ein Scan der gesamten Sammlung erforderlich. Siehe Indexverwaltung mit reIndex.