Latest web development tutorials

MongoDB analyse de la requête

MongoDB requête et d'analyse afin d'assurer l'efficacité de notre indice proposé est un outil important pour interroger l'analyse des performances.

MongoDB analyse de requête fonctions couramment utilisées sont: expliquer () et indice ().


Utilisez expliquer ()

expliquer le fonctionnement fournit des informations de requête, utilisez les statistiques d'index et de requête. Aidez-nous à optimiser l'indice.

Ensuite, nous créons une égalité entre les index et les utilisateurs de user_name dans la collection:

>db.users.ensureIndex({gender:1,user_name:1})
</p>
<p>现在在查询语句中使用 explain :</p>
<pre>
>db.users.find({gender:"M"},{user_name:1,_id:0}).explain()

expliquer ci-dessus () requête renvoie les résultats suivants:

{
   "cursor" : "BtreeCursor gender_1_user_name_1",
   "isMultiKey" : false,
   "n" : 1,
   "nscannedObjects" : 0,
   "nscanned" : 1,
   "nscannedObjectsAllPlans" : 0,
   "nscannedAllPlans" : 1,
   "scanAndOrder" : false,
   "indexOnly" : true,
   "nYields" : 0,
   "nChunkSkips" : 0,
   "millis" : 0,
   "indexBounds" : {
      "gender" : [
         [
            "M",
            "M"
         ]
      ],
      "user_name" : [
         [
            {
               "$minElement" : 1
            },
            {
               "$maxElement" : 1
            }
         ]
      ]
   }
}

Maintenant, nous regardons le champ de l'ensemble des résultats:

  • indexOnly: champ est vrai, que nous utilisons l'indice.
  • cursor: Parce que cette requête utilise l'index, les index MongoDB sont stockés dans la structure B-tree, de sorte qu'il est également utilisé le type BtreeCursor du curseur. Si vous ne l'utilisez l'index, le type de curseur est BasicCursor. Cette clé vous donnera le nom de l'index que vous utilisez, vous pouvez voir le nom system.indexes défini dans la base de données actuelle (créé automatiquement, puisque l'information d'index est enregistré, il sera mentionné un peu) pour obtenir plus d'informations Index .
  • n: nombre de documents retournés par la requête en cours.
  • nscanned / nscannedObjects: L'enquête a montré que le nombre total actuel de documents numérisés de la collection, notre objectif est de faire de cette valeur et renvoie le nombre de documents plus le mieux.
  • Millis: l'heure actuelle, le nombre de millisecondes nécessaires par la requête.
  • indexBounds: l'utilisation spécifique de l' indice de requête en cours.

Utilisez soupçon ()

Bien que MongoDB optimiseur de requêtes fonctionne généralement très bien, mais vous pouvez également utiliser des conseils pour forcer MongoDB d'utiliser un index spécifié.

Cette approche permettra d'améliorer les performances dans certains cas. Un index de la collection et exécuter la requête plus d'un champ (certains champs ont été indexés).

Des exemples utilisent la requête suivante spécifie les champs de genre et l'indice de user_name à la requête:

>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1})

Vous pouvez utiliser la fonction expliquer () pour analyser la requête ci-dessus:

>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain()