Отслеживать производительность MongoDB? - PullRequest
21 голосов
/ 09 декабря 2010

Есть ли способ отслеживать производительность запросов в MongoDB? Специально тестирующие индексы или поддокументы?

В sql вы можете запускать запросы, видеть время выполнения и другие аналитические метрики.

У меня огромная коллекция mongoDB, и я хочу попробовать разные варианты и индексы, не зная, как ее протестировать, было бы приятно узнать, сколько времени понадобилось, чтобы найти запись ... (Я новичок в MongoDB). Спасибо

Ответы [ 2 ]

21 голосов
/ 09 декабря 2010

Здесь есть две вещи, с которыми вы, вероятно, будете знакомы.

  1. Объяснить планы
  2. Медленные журналы

Объяснить планы

Вот несколько основных документов , которые можно объяснить. Запуск объяснения так же прост, как db.foo.find(query).explain(). ( обратите внимание, что это на самом деле выполняет запрос, поэтому, если ваш запрос медленный, это тоже будет )

Чтобы понять вывод, вам нужно проверить некоторые документы в медленных журналах ниже. В основном вам сообщают подробности о том, «сколько индекса было отсканировано», «сколько найдено» и т. Д. Как и в случае с такими деталями производительности, интерпретация действительно зависит от вас. Прочитайте документы выше и ниже, чтобы указать правильное направление.

Медленные журналы

По умолчанию медленные журналы активны с порогом 100 мс. Вот ссылка на полную документацию по профилированию. Несколько ключевых моментов, с которых можно начать:

Получить / установить профилирование:

db.setProfilingLevel(2); // 0 => none, 1 => slow, 2 => all
db.getProfilingLevel();

См. Медленные запросы:

db.system.profile.find()
2 голосов
/ 09 декабря 2010

MongoDB имеет профилировщик запросов, который вы можете включить.Смотри: http://www.mongodb.org/display/DOCS/Database+Profiler

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...