MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB:намиране на време за изпълнение на командата count() на милиони записи в колекция?

MongoDB има вграден профилиращ инструмент, който можете да активирате чрез:

db.setProfilingLevel(2)

Вместо '2' можете да изберете всяка опция от списъка по-долу:

  • 0 - Профайлърът е изключен, не събира никакви данни. mongod винаги записва операции, по-дълги от прага на slowOpThresholdMs, в своя журнал.
  • 1 - събира данни за профилиране само за бавни операции. По подразбиране бавните операции са тези, които са по-бавни от 100 милисекунди. Можете да промените прага за „бавни“ операции с опцията за изпълнение slowOpThresholdMs или командата setParameter. Вижте раздела Указване на прага за бавни операции за повече информация.
  • 2 - събира данни за профилиране за всички операции с бази данни.

И можете да видите резултатите от вашите заявки, като проверите system.profile колекция в MongoDB..

РЕДАКТИРАНЕ:

Ако искате да тествате ефективността, можете да използвате следните фрагменти от код, които могат да бъдат изпълнени от конзолата mongo:

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

И моите заключения са следните:

  1. добавяне на индекс (с изключение на идентификатора) върна броя за 10 милиона записа за около 170 ms
  2. броене по id (броене без заявка) върна броя за по-малко от милисекунда
  3. броене по идентификатор с курсор (имайте предвид, че .find() ще действа като курсор над колекцията) върна броя за по-малко от милисекунда

Така че повече индекси вашата колекция има, толкова по-бавна ще бъде вашата заявка . Ако преброите по _id, ще бъде моментално , ако имате съставен индекс той ще мащабира въз основа на броя на индексите .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Еквивалент на опцията out:reduce на mongo в hadoop

  2. Вземете документ в MongoDB, без да посочвате колекция

  3. mongoose Find с множество условия

  4. MongoDB ETIMEOUT

  5. MongoDB $ месец