2016-07-11 12 views
2

Wir arbeiten an einer Anwendung, in Java-Code im Gespräch mit Mongo und die Ergebnisse zurück mit Spring Data Streams. Wir haben uns die Profiler-Ausgabe angeschaut und ich bin nicht zu 100% auf das, was es bedeutet.Beim Profiling einer Mongo-Abfrage, was bedeutet "Millis"?

https://docs.mongodb.com/manual/reference/database-profiler/

{ 
    "op" : "query", 
    "ns" : "test.c", 
    "query" : { 
     "find" : "c", 
     "filter" : { 
     "a" : 1 
     } 
    }, 
    "keysExamined" : 2, 
    "docsExamined" : 2, 
    "cursorExhausted" : true, 
... 
"responseLength" : 108, 
"millis" : 0, 

Die Beschreibung der Dokumentation ist:

system.profile.millis Die Zeit in Millisekunden aus der Perspektive des mongod vom Beginn der Operation bis zum Ende der Betrieb.

OK, aber was ist die Operation? Wenn ich eine Abfrage ausführe und 1000 Ergebnisse zurückziehe, ist die "Millis" -Zeit nur für den Abfrageplan? Oder schließt es das GESAMTE ein, das es ausgibt, die Ergebnisse zurückzuziehen und sie an den Fahrer zu senden?

Gibt dies unterschiedliche Antworten beim Streaming vs Non-Streaming?

Antwort

0

Die Operation ist die Abfrage; die Abfrage nicht zurück Dokumente, sondern gibt einen Cursor, der an den Stellen der Dokumente auf der Festplatte verweist: https://docs.mongodb.com/v3.0/core/cursors/

Die „Millis“ Ergebnis ist die Zeit, MongoDB für die Abfrageergebnisse (führen Index oder Reflektor suchen Sammlungsscan, identifizieren Sie alle Dokumente, die die Abfragekriterien erfüllen und führen Sie ggf. Sortierungen durch) und geben Sie den entsprechenden Cursor an den Treiber zurück.

Ich bin mir nicht sicher, was Sie mit "streaming" meinen, aber es könnte der Treiber sein, der über den Cursor iteriert, um auf die Ergebnisse der Abfrage zuzugreifen.