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.
Wenig genutzte und redundante Indizes
-Übersicht
Indizes verbessern die allgemeine Abfrageleistung von Workloads, sind jedoch mit Kosten verbunden. Jeder Index verbraucht Speicherplatz und I/O Ressourcen, und Schreibvorgänge müssen alle Indizes in der Sammlung aktualisieren. Wenn Ihre Datenbank ungenutzte, unzureichend genutzte oder redundante Indizes enthält, führt dies zu einem Overhead für den Cluster, was zu Leistungseinbußen führt. Durch mehrere unnötige Indizes entsteht ein Anti-Pattern, das zu Leistungsproblemen, erhöhten Speicherkosten und höherem Betriebsaufwand führt.
Suboptimale Indizierungsszenarien
-
Unbenutzte Indizes: Indizes, die für einmalige Abfragen oder in früheren Produktiterationen erstellt wurden und auf die mit aktuellen Abfragemustern nicht mehr zugegriffen wird. Um ungenutzte Indizes für eine Sammlung zu identifizieren, können Sie IndexStats verwenden. Weitere Informationen finden Sie unter Wie analysiere ich die Indexnutzung und identifiziere ungenutzte Indizes?.
-
Redundante Indizes: Mehrere Indizes, die sich überschneidende Schlüsselmuster oder identische Abfragemuster abdecken. Beispiel: Ein Einzelschlüsselindex für Attribut A wird überflüssig, wenn ein zusammengesetzter Index sowohl das Attribut A als auch das Attribut B abdeckt, da der zusammengesetzte Index Abfragen für Attribut A allein verarbeiten kann.
-
Over-Indexing: Erstellung von Indizes „für alle Fälle“, ohne die tatsächlichen Abfragemuster oder Leistungsanforderungen zu analysieren.
-
Indizes mit niedriger Kardinalität: Indizes für Felder mit wenigen eindeutigen Werten (z. B. boolesche Felder, Statusflags), die nur einen minimalen Nutzen bei der Abfrageoptimierung bieten.
Auswirkungen auf die Cluster-Leistung
-
Speicher und I/O: Jeder Index verbraucht Speicherplatz und I/O-Ressourcen und trägt so zu den Gesamtkosten bei. Wenn ein Index ungenutzt oder redundant ist, bedeutet dies unnötige Kosten für Ihren Cluster.
-
Eingeschränkte Schreibleistung: Bei Einfüge-, Aktualisierungs- und Löschvorgängen müssen Indizes beibehalten werden, was zu einem Mehraufwand führt, der Ressourcen verbraucht. Ungenutzte oder redundante Indizes führen zu unnötigem Overhead bei diesen Vorgängen.
-
Arbeitsspeicher- und CPU-Auslastung: Indizes konkurrieren um den Pufferpool-Speicher und können häufig aufgerufene Daten löschen, wenn der Arbeitssatz nicht in den Instanzspeicher passt, was zu einem suboptimalen Ergebnis führt. BufferCacheHitRatio Das System verbraucht außerdem CPU-Ressourcen, um die Indexstrukturen aufrechtzuerhalten.
Verfügbare Tools zur Identifizierung von Möglichkeiten zur Indexoptimierung
-
Tool zur Indexüberprüfung:
-
Tool zur Erkennung der Indexkardinalität
Zusammenstellung des Toolkits:
git clone https://github.com/awslabs/amazon-documentdb-tools.git
1. Tool zur Indexüberprüfung
Das Tool zur Indexüberprüfung analysiert alle Sammlungen und Indizes, um eine Liste der Indizes und ihrer Verwendungsmuster bereitzustellen, und identifiziert redundante Indizes in Ihrem Amazon DocumentDB-Cluster. Führen Sie dieses Tool für eine umfassende Analyse auf allen Cluster-Instances aus. Weitere Informationen finden Sie unter Index Review Tool
Verwendung:
cd performance/index-review/ python3 index-review.py --server-alias <server-alias> --uri <mongodb-uri>
Ausgabedateien
-
{server-alias}-collections.csv: Collection-level Statistiken -
{server-alias}-indexes.csv: Detaillierte Kennzahlen zur Indexnutzung -
{server-alias}-{timestamp}-index-review.json: Rohdaten für weitere Analysen
Anmerkung
Führen Sie es für jede Instanz im Cluster mit einem unabhängigen Alias aus, um Statistiken für jede Instanz zu generieren, und führen Sie dann das Tool aus, um eine kumulative Analyse zu erhalten
ZB: python3 index-review.py --files "{server-alias}-{timestamp}-index-review.json, {server-alias}-{timestamp}-index-review.json" --server-alias full-review
2. Tool zur Erkennung der Indexkardinalität
Dieses Tool identifiziert Indizes mit niedriger Kardinalität, die für die Abfrageleistung ineffizient sind.
Usage
cd performance/index-cardinality-detection/ python3 detect-cardinality.py --uri <mongodb-uri>
Parameter
-
--threshold: Prozentsatz des Kardinalitätsschwellenwerts (Standard: 1%) -
--sample-count: Anzahl der zu prüfenden Dokumente (Standard: 100.000) -
--max-collections: Maximale Anzahl von Sammlungen, die pro Datenbank gescannt werden sollen (Standard: 100)
Weitere Informationen finden Sie unter https://aws.amazon.com/blogs/database/detect-and-fix-low-cardinality-indexes-in-amazon-documentdb/
Strategien zur Problembehebung
1. Entfernung ungenutzter und redundanter Indizes
// Example: Drop unused index db.collection.dropIndex("unused_index_name")
Anmerkung
Indizes sollten niemals gelöscht werden, ohne dies mit allen interessierten Parteien besprochen und die Leistung getestet zu haben.
2. Optimierung des Index mit niedriger Kardinalität
-
Verwenden Sie Teilindizes mit Filtern
-
Wandeln Sie einzelne Indizes mit niedriger Kardinalität in zusammengesetzte Indizes um