Ich versuche, die Ausführungszeit für eine Aggregation query.Query zu finden, ist unten wie:MongoDB Ausführungszeit von Aggregate Abfrage
db.table.aggregate([{$sort: {count:-1}}]);
es die 100K Dokumente sortiert nach desc.The Kommandozeile zählen nicht zeigen alle Aufzeichnungen so habe ich die folgende Stelle:
db.table.aggregate([{$sort: {count:-1}}]).toArray();
I db.setProfilingLevel (2) getan haben;
als ich die erste Abfrage ausführen und zu tun:
db.system.profile.find((),{millis:1});
I get millis : 18
wenn ich zweite Abfrage ausführen und finde Zeit vom Profil
I get millis:18 , millis:87 , millis: 81 ... millis:75, millis:35. I get 12 different execution times.
ich, wenn ich die Ausführungszeit richtig messen will wissen wollte Aggregation, bei der ich die gesamte Kollektion durch count desc bestelle. Was ist der richtige Weg? Ist die Abfrage mit .toArray() die richtige Abfrage zum Messen der Ausführung. Kannst du mir bitte helfen, wie ich die Ausführungszeit messen soll?
Ich würde '.toArray()' nicht verwenden, da das bedeutet, dass es tatsächlich alles aus der Datenbank "holt". Es wirkt sich nicht wirklich darauf aus, was in 'system.profile' geht, aber die" fetch "-Zeit ist nicht die" Ausführungszeit ", die der Profiler aufzeichnet. Verwenden Sie '.toArray()' nur dann, wenn Sie vom Senden bis zum Abrufen der Ergebnisse tatsächlich nach einer Gesamtzeit suchen. Und natürlich wäre der einzige gültige Zeitpunkt, einen Timer vor der Ausführung zu starten und die Differenz danach zu messen. Es ist alles ein bisschen "iffy" sowieso. Ihre Abfrage und Ihr Aggregat sind auch hier "Äpfel" und "Orangen". –
Können Sie erklären, was meinst du mit Abfrage und Aggregat sind Äpfel und Orangen. Zweitens, wenn ich nur die Zeit für die Ausführung messen soll, indem ich einen Timer vor und nach der Ausführung starte, wie soll ich das machen? –