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).
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).
Antworten:
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 $indexStats
Aggregationsoperators 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 _id
und indexme
beide 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 indexme
und 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")
}
}