Comment trouver les statistiques d'index MongoDB

8

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)

Vishakha dipak
la source

Réponses:

9

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' $indexStatsopé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 _idet 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 indexmeet 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")
    }
}
Adam C
la source
à partir des documents: "Modifié dans la version 3.0: la sortie d'état du serveur n'inclut plus les sections workingSet, indexCounters et recordStats." D'autres idées?
serv-inc