Latest web development tutorials

análisis de consultas MongoDB

MongoDB consultas y análisis para garantizar la eficacia de nuestro índice propuesto es una herramienta importante para consultar el análisis de rendimiento.

Análisis de consultas MongoDB funciones de uso común son: explican () y toque ().


Utilice explicar ()

explicar el funcionamiento proporciona información de consulta, utilice las estadísticas de índice y consulta. nos ayudará a optimizar el índice.

A continuación, creamos un índice de género y los usuarios user_name en la colección:

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

Por encima de explicar () consulta devuelve los siguientes resultados:

{
   "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
            }
         ]
      ]
   }
}

Ahora, nos fijamos en el campo del conjunto de resultados:

  • indexOnly: Campo es cierto, que utilizamos el índice.
  • cursor: Debido a que esta consulta utiliza el índice, los índices MongoDB se almacenan en la estructura de árbol B, por lo que también se utiliza el tipo BtreeCursor del cursor. Si no se utiliza el índice, el tipo de cursor es BasicCursor. Esta clave le dará el nombre del índice que está utilizando, se puede ver por el nombre system.indexes establecido en virtud de la base de datos actual (creado automáticamente, ya que la información de índice se almacena, lo que se indicará un poco) para obtener más información Índice .
  • n: número de documentos devueltos por la consulta actual.
  • nscanned / nscannedObjects: La investigación mostró que el número total actual de los documentos escaneados en la colección, nuestro objetivo es hacer de este valor y devuelve el número de documentos cuanto más cerca mejor.
  • Millis: la hora actual, el número de milisegundos que necesita la consulta.
  • indexBounds: el uso específico de consulta del índice actual.

Utilice pista ()

Mientras MongoDB optimizador de consultas en general, funciona muy bien, pero también se puede utilizar sugerencias para forzar MongoDB utilizar un índice especificado.

Este enfoque mejorará el rendimiento en algunos casos. Un índice de la colección y ejecutar la consulta más de un campo (algunos campos se han indexado).

Los ejemplos utilizan la siguiente consulta especifica los campos de género e índice nombre_usuario a la consulta:

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

Puede utilizar la función de explicar () para analizar la consulta anterior:

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