Existe-t-il un moyen de déterminer quels sont tous les index mis en cache dans la RAM? Je veux connaître les statistiques liées à la page pour les index individuels (nombre de hits et de miss)
Vous pouvez obtenir des informations de hit globales (à l'échelle de l'instance) à partir de la db.serverStatus()
commande, et en particulier:
http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.hits http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.misses
Ces chiffres sont des totaux vus pour la durée de vie du processus, donc si vous voulez obtenir un taux ou voir la tendance dans le temps, vous devrez les enregistrer périodiquement et différencier les valeurs en conséquence. Heureusement, si vous installez MMS Monitoring , il le fera pour vous et représentera graphiquement les résultats.
Cependant, il n'y a actuellement aucune statistique par indice disponible. La demande de fonctionnalité pertinente peut être trouvée ici à des fins de suivi et de vote:
https://jira.mongodb.org/browse/SERVER-2227
Mise à jour: janvier 2016
Les statistiques référencées ci-dessus ont été supprimées de la sortie de la commande d'état du serveur, elles ne sont donc plus disponibles. Cependant, la demande de fonctionnalité référencée est maintenant terminée et est disponible dans la version 3.2 sous la forme de l' $indexStats
opérateur d'agrégation (les documents liés contiennent également un exemple de sortie). Pour être complet, voici un exemple que j'ai mis en place:
Avant toute requête, je n'ai que 2 index, la valeur par défaut _id
et indexme
, tous les deux avec 0 ops:
> 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")
}
}
Ensuite, exécutez quelques trouvailles pour activer les opérations indexme
et vérifiez à nouveau:
> 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")
}
}