Latest web development tutorials

analisi delle query MongoDB

interrogazione MongoDB e analisi per garantire l'efficacia del nostro indice proposto è uno strumento importante per interrogare l'analisi delle prestazioni.

MongoDB analisi delle query funzioni di uso comune sono: spiegare () e suggerimento ().


Utilizzare spiegare ()

spiegare il funzionamento fornisce informazioni ricerca, clicca sul statistiche indicizzazione e di query. Aiutaci ad ottimizzare l'indice.

Poi creiamo un genere di indice e gli utenti user_name nella collezione:

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

Sopra spiegare () query restituisce i seguenti risultati:

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

Ora, guardiamo il campo del set di risultati:

  • indexonly: campo è vero, che usiamo l'indice.
  • cursore: Perché questa query utilizza l'indice, indici MongoDB sono memorizzati nella struttura B-tree, quindi è usato anche BtreeCursor tipo di cursore. Se non si utilizza l'indice, il tipo di cursore è BasicCursor. Questo tasto darà il nome dell'indice che si sta utilizzando, si può vedere dal nome system.indexes impostato sotto il database corrente (creata automaticamente, in quanto le informazioni di indice viene memorizzato, sarà citato un po ') per ottenere ulteriori informazioni Indice .
  • n: numero di documenti restituiti dalla query corrente.
  • nscanned / nscannedObjects: L'indagine ha mostrato che il numero totale attuale dei documenti acquisiti nella collezione, il nostro obiettivo è quello di rendere questo valore e restituisce il numero di documenti più il meglio.
  • Millis: l'ora corrente, il numero di millisecondi necessari dalla query.
  • indexBounds: l'attuale uso specifico indice di query.

Utilizzare suggerimento ()

Mentre MongoDB Query Optimizer generalmente funziona molto bene, ma è anche possibile utilizzare i suggerimenti per forzare MongoDB per usare un indice specificato.

Questo approccio migliorare le prestazioni in alcuni casi. Un indice della collezione ed eseguire la query più di un campo (alcuni campi sono stati indicizzati).

Esempi utilizzare la seguente query specifica i campi di genere e indice nome_utente alla query:

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

È possibile utilizzare la funzione di spiegare () per analizzare la query di cui sopra:

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