Il y a deux choses ici que vous connaissez probablement.
- Expliquer les plans
- 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()
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