MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB:Finden Sie die Ausführungszeit für den Befehl count() für Millionen von Datensätzen in einer Sammlung?

MongoDB verfügt über einen integrierten Profiller, den Sie aktivieren können über:

db.setProfilingLevel(2)

Anstelle von '2' können Sie eine beliebige Option aus der folgenden Liste auswählen:

  • 0 - der Profiler ist aus, sammelt keine Daten. mongod schreibt Operationen, die länger als der slowOpThresholdMs-Schwellenwert sind, immer in sein Protokoll.
  • 1 - sammelt Profildaten nur für langsame Operationen. Standardmäßig sind langsame Operationen langsamer als 100 Millisekunden. Sie können den Schwellenwert für „langsame“ Operationen mit der Laufzeitoption slowOpThresholdMs oder dem Befehl setParameter ändern. Weitere Informationen finden Sie im Abschnitt Festlegen des Schwellenwerts für langsame Vorgänge.
  • 2 - sammelt Profildaten für alle Datenbankoperationen.

Und Sie können die Ergebnisse Ihrer Abfragen sehen, indem Sie das system.profile überprüfen Sammlung in MongoDB..

BEARBEITEN:

Wenn Sie die Leistung testen möchten, können Sie die folgenden Codeschnipsel verwenden, die von der Mongo-Konsole ausgeführt werden können:

> for (var i = 0; i < 10000000; ++i) { db.countTest.insert({a: i % 10}) }
> db.countTest.ensureIndex({a:1})
> db.countTest.count({a: 1})
> db.countTest.count()
> db.countTest.find().count()

Und meine Schlussfolgerungen sind wie folgt:

  1. Hinzufügen eines Indexes (abgesehen von der ID) hat die Anzahl von 10 Millionen Datensätzen zurückgegeben in etwa 170 ms
  2. Zählung nach ID (Zählung ohne Abfrage) hat die Zählung in weniger als einer Millisekunde zurückgegeben
  3. Zählen nach ID mit Cursor (Beachten Sie, dass .find() als Cursor über der Sammlung agiert) gab die Zählung in weniger als einer Millisekunde zurück

Also die mehr Indizes Ihre Sammlung hat, desto langsamer wird Ihre Abfrage sein . Wenn Sie nach _id zählen, erfolgt dies sofort , wenn Sie einen zusammengesetzten Index haben es wird basierend auf der Anzahl der Indizes skaliert .