Ответ 1
Здесь есть две вещи, которые вы, вероятно, будете знать.
- Объясните планы.
- Медленные журналы
Объяснить планы
Ниже приведены некоторые основные документы. Выполнение объяснения так же просто, как db.foo.find(query).explain()
. (обратите внимание, что это действительно запускает запрос, поэтому, если ваш запрос медленный, это тоже будет)
Чтобы понять вывод, вам нужно будет проверить некоторые документы в медленных журналах ниже. Вам в основном дается подробная информация о том, "сколько индексов было проверено", "сколько найдено" и т.д. Как и в случае с такими характеристиками производительности, интерпретация действительно зависит от вас. Прочтите документы выше и ниже, чтобы указать вам в правильном направлении.
Медленные журналы
По умолчанию медленные журналы активны с порогом в 100 мс. Здесь ссылка на полную документацию по профилированию. Несколько ключевых моментов, которые помогут вам начать:
Получить/задать профилирование:
db.setProfilingLevel(2); // 0 => none, 1 => slow, 2 => all
db.getProfilingLevel();
Смотрите медленные запросы:
db.system.profile.find()