db.collection.explain()MongoDB bietet die Möglichkeit, eine Abfrageanalyse durchzuführen, um zu sehen, ob Indizes verwendet werden, welche Art von Zugriff (Indexscan vs. Collection-Scan) stattfindet und wie effizient die Abfrage ist.
db.collection.find({ fieldName: value }).explain("executionStats")db.collection.aggregate()MongoDB sammelt Nutzungsstatistiken für jeden Index. Mit der
aggregate()-Pipeline kannst du auf diese Daten
zugreifen.
db.collection.aggregate([
{ $indexStats: {} }
])Beispiel: Wenn ein Index eine geringe Zugriffszahl hat, könnte das ein Kandidat für die Entfernung sein.
db.serverStatus()Der Befehl db.serverStatus() gibt einen Überblick über
die Performance der Datenbank, einschließlich Metriken zu Abfragen und
Indexzugriffen.
db.serverStatus().metrics.queryEin hoher Anteil an Collection-Scans deutet darauf hin, dass für einige Abfragen relevante Indizes fehlen.
MongoDB enthält einen Profiler, der langsame Abfragen (Slow Queries) protokolliert. Diese können verwendet werden, um potenziell ineffiziente Abfragen zu identifizieren.
db.setProfilingLevel(1, { slowms: 100 })db.system.profile.find().sort({ ts: -1 })listIndexes zur Verwaltung bestehender
IndizesDer Befehl listIndexes zeigt alle vorhandenen Indizes in
einer Sammlung an. Du kannst überprüfen, ob ein Index redundant oder
unnötig ist.
db.collection.getIndexes()Beispiel: Wenn mehrere Indizes auf dieselben Felder zugreifen (z. B.
{ field1: 1 } und { field1: 1, field2: -1 }),
könnte der erste redundant sein.
Die Speichernutzung von Indizes kann ebenfalls eine Entscheidungshilfe sein. Zu viele oder große Indizes können den RAM belasten.
db.collection.stats()Große Indizes, die selten verwendet werden, sind Kandidaten für die Entfernung.
db.collection.explain(), um
häufige Abfragen zu analysieren.$indexStats, welche
Indizes aktiv genutzt werden.