sql >> Database >  >> NoSQL >> MongoDB

MongoDB:vind de uitvoeringstijd voor de opdracht count() op miljoenen records in een verzameling?

MongoDB heeft een ingebouwde profiller die u kunt inschakelen via:

db.setProfilingLevel(2)

In plaats van '2' kunt u elke optie kiezen uit de onderstaande lijst:

  • 0 - de profiler is uitgeschakeld, verzamelt geen gegevens. mongod schrijft altijd bewerkingen die langer zijn dan de slowOpThresholdMs-drempel naar zijn log.
  • 1 - verzamelt alleen profielgegevens voor langzame bewerkingen. Standaard zijn langzame bewerkingen die langzamer dan 100 milliseconden. U kunt de drempel voor "trage" bewerkingen wijzigen met de runtime-optie slowOpThresholdMs of de opdracht setParameter. Zie het gedeelte Specificeer de drempel voor langzame bewerkingen voor meer informatie.
  • 2 - verzamelt profileringsgegevens voor alle databasebewerkingen.

En u kunt de resultaten van uw zoekopdrachten bekijken door het system.profile . te controleren verzameling in MongoDB..

BEWERKEN:

Als u de prestaties wilt testen, kunt u de volgende codefragmenten gebruiken die kunnen worden uitgevoerd vanaf de mongo-console:

> 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()

En mijn conclusies zijn als volgt:

  1. een index toevoegen (behalve de id) gaf de telling terug voor 10 miljoen records over ongeveer 170ms
  2. tellen op id (telling zonder enige zoekopdracht) retourneerde de telling in minder dan een milliseconde
  3. tellen op id met cursor (merk op dat de .find() zal fungeren als een cursor over de verzameling) retourneerde de telling in minder dan een milliseconde

Dus de meer indexen uw verzameling heeft de langzamer uw zoekopdracht zal zijn . Als je telt op _id, is het direct , als u een samengestelde index . heeft het zal schalen op basis van het aantal indexen .



  1. MongoDB-aggregatie-operators voor het retourneren van datumonderdelen

  2. Hoe installeer ik Redis

  3. Meteor:een object vinden uit een verzameling door _id

  4. Kan iemand het redis setbit-commando uitleggen?