2010-12-09 6 views
21

Existe-t-il un moyen de suivre les performances des requêtes dans MongoDB? Testant particulièrement les index ou sous-documents?Suivre les performances de MongoDB?

En SQL, vous pouvez exécuter des requêtes, voir le temps d'exécution et d'autres mesures analytiques. J'ai une énorme collection de mongoDB et que vous voulez essayer différentes variations et index, je ne sais pas comment le tester, ce serait bien de voir combien de temps cela a pris pour trouver un enregistrement .. (Je suis nouveau dans MongoDB). Merci

Répondre

22

Il y a deux choses ici que vous connaissez probablement.

  1. Expliquer les plans
  2. Logs lentes

Expliquez les plans

Here are some basic docs sur vous expliquer. Exécuter expliquer est aussi simple que db.foo.find(query).explain(). (notez que cela lance réellement la requête, donc si votre requête est lente, elle le sera aussi)

Pour comprendre la sortie, vous voudrez vérifier certains des documents sur les journaux lents ci-dessous. Vous trouverez essentiellement des détails sur "combien d'index a été scanné", "combien sont trouvés", etc. Comme c'est le cas avec ces détails de performance, l'interprétation est vraiment à vous. Lisez les documents ci-dessus et ci-dessous pour vous orienter dans la bonne direction.

Logs lentes

Par défaut, les journaux lents sont actifs à un seuil de 100 ms. Here's a link à la documentation complète sur le profilage. Un couple de points clés pour vous aider à démarrer:

Get/Set profilage:

db.setProfilingLevel(2); // 0 => none, 1 => slow, 2 => all 
db.getProfilingLevel(); 

Voir les requêtes lentes:

db.system.profile.find() 
+0

Juste pour ajouter après quelques années: maintenant la "nouvelle" méthode recommandée d'utiliser est: db.foo.explain(). Find (query). Notez "expliquer" avant "trouver". En outre, spécifiez explain (true) pour obtenir plus de détails, tels que le nombre de documents examinés: db.foo.explain (true) .find (query); Tapez db.foo.explain(). Help pour lister les requêtes sur lesquelles vous pouvez utiliser explain. – alexbt