Latest web development tutorials

MongoDB Abfrageanalyse

MongoDB Abfrage und Analyse, um die Wirksamkeit unserer vorgeschlagenen Index, um sicherzustellen, ist ein wichtiges Instrument, die Leistungsanalyse abzufragen.

MongoDB Abfrage Analyse häufig verwendete Funktionen sind: erklären () und Hinweis ().


Verwenden Sie erklären ()

erklären Betrieb Abfrageinformationen liefert, die Index und Abfragestatistiken verwenden. Helfen Sie uns, um den Index zu optimieren.

Als nächstes werden wir einen Index Geschlecht und user_name Benutzer in der Sammlung zu erstellen:

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

Vor erklären () Abfrage die folgenden Ergebnisse zurückgibt:

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

Nun, schauen wir auf dem Gebiet der Ergebnismenge:

  • indexOnly: Feld ist wahr, dass wir den Index verwenden.
  • Cursor: Da diese Abfrage den Index verwendet, werden MongoDB Indizes in B-Baumstruktur gespeichert, so wird es auch BtreeCursor Typ des Cursors verwendet. Wenn Sie den Index nicht verwenden, wird der Cursor-Typ BasicCursor. Dieser Schlüssel wird den Namen des Index geben Sie verwenden, können Sie durch den Namen system.indexes unter der aktuellen Datenbank (automatisch erstellt, da der Index-Informationen gespeichert sind, wird dies ein wenig erwähnt werden) gesetzt, um mehr Informationen Index erhalten .
  • n: Anzahl der Dokumente , die von der aktuellen Abfrage zurückgegeben.
  • nScanned / nscannedObjects: Die Untersuchung ergab , dass die aktuelle Gesamtzahl der gescannten Dokumente in der Sammlung, unser Ziel , diesen Wert zu machen ist , und gibt die Anzahl der Dokumente , desto besser , je näher.
  • Millis: die aktuelle Zeit, die Anzahl der Millisekunden von der Abfrage benötigt.
  • indexBounds: die aktuelle Abfrage Index spezifische Verwendung.

Verwenden Sie Hinweis ()

Während MongoDB Abfrageoptimierer im Allgemeinen sehr gut funktionieren, aber Sie können auch Hinweise verwenden MongoDB zu zwingen, einen bestimmten Index zu verwenden.

Dieser Ansatz wird die Leistung in einigen Fällen verbessern. Ein Index der Sammlung und führen Sie die Abfrage mehr als ein Feld (einige Felder wurden katalogisiert).

Beispiele verwenden die folgende Abfrage, die Geschlecht und user_name Indexfelder auf die Abfrage angibt:

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

Sie können die erklären () Funktion verwenden, um die obige Abfrage zu analysieren:

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