So finden Sie MongoDB-Indexstatistiken

8

Können wir auf irgendeine Weise herausfinden, welche Indizes im RAM zwischengespeichert sind? Ich möchte seitenbezogene Statistiken für einzelne Indizes wissen (Anzahl der Treffer und Fehler).

Vishakha Dipak
quelle

Antworten:

9

Sie können allgemeine (instanzweite) Trefferinformationen über den db.serverStatus()Befehl abrufen , insbesondere:

http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.hits http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.misses

Diese Zahlen sind Summen, die für die Lebensdauer des Prozesses angezeigt werden. Wenn Sie also eine Rate erhalten oder den Trend über die Zeit sehen möchten, müssen Sie sie regelmäßig aufzeichnen und die Werte entsprechend differenzieren. Wenn Sie MMS Monitoring installieren , wird dies zum Glück für Sie erledigt und die Ergebnisse grafisch dargestellt.

Derzeit sind jedoch keine Statistiken pro Index verfügbar. Die entsprechende Funktionsanforderung finden Sie hier zu Tracking- und Abstimmungszwecken:

https://jira.mongodb.org/browse/SERVER-2227

Update: Januar 2016

Die oben genannten Statistiken wurden aus der Ausgabe des Serverstatusbefehls entfernt und sind daher nicht mehr verfügbar. Die angeforderte Feature-Anforderung ist jedoch jetzt abgeschlossen und in Version 3.2 in Form des $indexStatsAggregationsoperators verfügbar (die verknüpften Dokumente enthalten auch Beispielausgaben). Der Vollständigkeit halber habe ich hier ein Beispiel zusammengestellt:

Vor allen Abfragen habe ich nur 2 Indizes, die Standardindizes _idund indexmebeide mit 0 Operationen:

> db.foo.aggregate( [ { $indexStats: { } } ] ).pretty()
{
    "name" : "indexme_1",
    "key" : {
        "indexme" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T19:03:01.358Z")
    }
}
{
    "name" : "_id_",
    "key" : {
        "_id" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T18:59:24.292Z")
    }
}

Führen Sie dann ein paar Funde aus, um die Operationen zu starten indexmeund erneut zu überprüfen:

> db.timecheck.find({indexme: 33})
> db.timecheck.find({indexme: 55})

> db.timecheck.aggregate( [ { $indexStats: { } } ] ).pretty()
{
    "name" : "indexme_1",
    "key" : {
        "indexme" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(2),
        "since" : ISODate("2016-01-12T19:03:01.358Z")
    }
}
{
    "name" : "_id_",
    "key" : {
        "_id" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T18:59:24.292Z")
    }
}
Adam C.
quelle
aus den Dokumenten: "In Version 3.0 geändert: Die Serverstatusausgabe enthält nicht mehr die Abschnitte workingSet, indexCounters und recordStats." Irgendwelche anderen Ideen?
serv-inc