In diesem Beitrag zeigen wir Ihnen, wie Sie ungenutzte Indizes in MongoDB finden, Nutzungsstatistiken Ihrer Indexsammlung überprüfen und Ihre ungenutzten Indizes löschen.
Die aktive Verwaltung von MongoDB-Datenbankindizes über mehrere Anwendungsversionen hinweg kann für Entwicklungsteams eine Herausforderung darstellen. Die Anforderungen ändern sich häufig mit jeder Version, bei der möglicherweise mehrere neue Indexe hinzugefügt und alte Indexe aufgegeben werden. Im Laufe der Zeit wird es dadurch schwierig nachzuverfolgen, welche MongoDB-Indizes verwendet werden und welche nicht mehr benötigt werden.
Indexe haben einen großen Einfluss auf die Schreibleistung – jedes Mal, wenn in eine Sammlung geschrieben wird, müssen die relevanten Indexe aktualisiert werden. Das Fehlen von Indizes macht sich sofort bemerkbar und verlangsamt die Abfrage – ungenutzte Indizes sind subtiler und müssen aktiv entfernt werden, um die Schreibleistung zu verbessern. Weitere Informationen finden Sie hier – Gefahren beim Erstellen von Indizes auf MongoDB.
In früheren Versionen von MongoDB gab es keine einfache Möglichkeit festzustellen, ob ein Index nicht verwendet wurde. Ab Version 3.2 hat MongoDB jedoch Unterstützung für den $indexStats-Operator hinzugefügt, mit dem Sie Statistiken über Ihre Indexnutzung sammeln können.
Nicht verwendete Indizes in MongoDB finden
Um Nutzungsstatistiken eines bestimmten Indexes einer Sammlung zu überprüfen, können Sie diesen Befehl verwenden:
db.collection.aggregate([{$indexStats: {}}, {$match: {"name": "<indexname>"}}])
So erhalten Sie die Statistiken für alle Indizes einer Sammlung:
db.collection.aggregate([{$indexStats:{}}])
Das zurückgegebene Dokument sieht folgendermaßen aus:
{ "name" : "test", "key" : { "key" : 1 }, "host" : "xxx:27017", "accesses" : { "ops" : NumberLong(145), "since" : ISODate("2017-11-25T16:21:36.285Z") } }
Die zwei wichtigen Felder, die hier zu beachten sind, sind:
-
Ops
Dies ist die Anzahl der Operationen, die den Index verwendet haben.
-
Seit
Dies ist die Zeit, von der MongoDB Statistiken gesammelt hat, und ist normalerweise die letzte Startzeit.
Löschen unbenutzter Indizes in MongoDB
Sobald Sie ungenutzte MongoDB-Indizes identifiziert und verifiziert haben, können Sie den Index mit dem folgenden Code löschen:
db.collection.dropIndex( "<index name>"); or db.collection.dropIndex("{key1:1.....}")
Vergewissern Sie sich wie immer, dass Sie den richtigen Index löschen, bevor Sie mit dem Löschvorgang fortfahren.
Wenn Sie Fragen zum Auffinden ungenutzter Indizes in MongoDB haben, hinterlassen Sie unten einen Kommentar oder kontaktieren Sie uns unter [email protected].