MongoDB - Analysere Queries

Analysere spørringer er en svært viktig del av å måle hvor effektive databasen og indeksering design er. Vi vil lære om de mest brukte $ forklare Hotell og $ hint
spørringer.

Bruke $ forklare

$ forklare Anmeldelser Operatøren gir informasjon om spørringen, indekser som brukes i en spørring og annen statistikk. Det er veldig nyttig når analysere hvor godt indekser er optimalisert.

I det siste kapitlet hadde vi allerede opprettet en indeks for brukere
samling på felt kjønn Hotell og brukernavn
bruker følgende spørring:
> db.users.ensureIndex ({kjønn: 1, brukernavn: 1})

Vi vil nå bruke $ forklare
på følgende spørring: < br >> db.users.find ({kjønn: "M"}, {brukernavn: 1, _id: 0}). forklare ()

Listen forklare () spørring returnerer følgende analysert resultatet: product: { "markøren": "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": {"kjønn": [["M", "M"]], "brukernavn": [[{"$ minElement": 1}, {"$ maxElement": 1}]]}}

Vi vil nå se på feltene i dette resultatsettet:

Den sanne verdien av indexOnly
indikerer at dette spørsmålet har brukt indeksering.

markøren
feltet angir hvilken type markør som brukes. BTreeCursor typen indikerer at en indeks ble benyttet, og også gir navnet av indeksen som brukes. BasicCursor indikerer at en full scan ble gjort uten bruk av indekser.

n
indikerer antall dokumenter som returneres.

nscannedObjects
angir totalt antall dokumenter skannet

nscanned
indikerer det totale antall dokumenter eller indeksoppføringer skannede

Bruke $ hint

$ hint
operatør tvinger spørringsoptimisereren å bruke den angitte indeks for å kjøre en spørring. Dette er spesielt nyttig når du ønsker å teste ytelsen til en spørring med ulike indekser. For eksempel oppgir følgende spørring indeksen på felt kjønn og brukernavn som skal brukes for dette søket:> db.users.find ({kjønn: "M"}, {brukernavn: 1, _id: 0}). Hint ({ kjønn: 1, brukernavn: 1}) For å analysere ovenfor spørring ved hjelp $ forklare:> db.users.find ({kjønn: "M"}, {brukernavn: 1, _id. 0}) hint ({kjønn: 1 , brukernavn:. 1}) forklare () Anmeldelser