Database Reference
In-Depth Information
Der millis-Wert ist von 52 auf 0 gesunken - die Leistungssteigerung geht al-
so gegen Unendlich (52 / 0)! Spaß beiseite, die Geschwindigkeit ist um eine
Größenordnung gestiegen. Beachten Sie auch, dass aus dem Basic-Cursor
ein B-Tree-Cursor geworden ist (er wird Cursor genannt, weil er auf die Stel-
le verweist, an der die Werte gespeichert sind; er enthält sie nicht). Mongo
geht die Collection nicht mehr vollständig durch, sondern nutzt den Baum,
um den Wert abzurufen. Noch wichtiger ist die Tatsache, dass die Zahl der
gescannten Objekte von 109999 auf 1 gesunken ist, da nur ein eindeutiger
Lookup notwendig war.
explain ist eine nützliche Funktion, doch Sie werden sie nur nutzen, um
bestimmte Query-Aufrufe zu untersuchen. Ist ein Profiling in einer normalen
Test- oder Produktionsumgebung nötig, benötigen Sie den Systemprofiler .
Wir setzen das Profiling-Level auf 2 (Level 2 speichert alle Queries, Level 1 nur
langsame Queries mit einer Dauer von über 100 Millisekunden) und führen
find wie üblich aus.
db.setProfilingLevel(2)
db.phones.find({ display : "+1 800-5650001" })
Das erzeugt ein neues Objekt in der system.profile -Collection, die Sie lesen
können wie jede andere Tabelle auch. ts ist der Zeitstempel (timestamp), zu
dem die Query ausgeführt wurde, info ist ein die Operation beschreibender
String und millis ist die Dauer der Operation.
db.system.profile.find()
{
"ts" : ISODate( "2011-12-05T19:26:40.310Z" ),
"op" : "query" ,
"ns" : "book.phones" ,
"query" :{ "display" : "+1 800-5650001" },
"responseLength" : 146,
"millis" :0,
"client" : "127.0.0.1" ,
"user" : ""
}
Mongo kann Indizes auch für verschachtelte Werte erzeugen. Wenn Sie einen
Index für alle Vorwahlen wünschen, nutzen Sie die Punktnotation für die
Feldangabe: components.area . Im Produktionsbetrieb sollten Sie Indizes mit
der Option { background : 1 } immer im Hintergrund erzeugen.
db.phones.ensureIndex({ "components.area" : 1 }, { background : 1 })
Search WWH ::




Custom Search