Mongo DB под управлением find сканирует избыточные индексы

#mongodb

#mongodb

Вопрос:

У меня есть сервер Mongo DB версии 4.0.0, установленный в Linux. У меня есть коллекция с именем «журналы».

У меня есть служба Windows, работающая на .NET Framework 4.7.2634.0, версия драйвера C # 2.5.0.0

Итак, у меня есть несколько вопросов

  1. Это нормально, если разные машины обращаются к Mongo DB с разными версиями драйверов C #?
  2. Может ли быть, что Mongo Compass 1.23.0 постоянно агрегируется в моих коллекциях, поскольку у меня ужасная производительность, и как только я ее отключаю, Mongo DB, похоже, значительно улучшается.
  3. Почему я не могу найти полный синтаксис find и объяснить его в журнале Mongo DB для запросов, которые завершились неудачно из-за тайм-аута?
  4. У меня есть несколько индексов. Среди них у меня есть эти два
 { Section: 1, Headline: 1, Timestamp: -1 }
{ Section: 1, Severity: 1, Timestamp: -1 } 

Я выполняю

 db.logs.find({ Section: "Machine", Headline: /^Shutdown.*/ } 

и в журналах я вижу

 planSummary: IXSCAN { Section: 1, Headline: 1, Timestamp: -1 },
IXSCAN { Section: 1, Severity: 1, Timestamp: -1 } 

Это очень странно, почему он также сканирует второй индекс (тот, у которого есть поле серьезности), если я фильтрую только поле, содержащееся в первом индексе (поле заголовка)?

Комментарии:

1. Ваш последний вопрос непонятен, пожалуйста, исправьте форматирование.

2. Спасибо за ваш комментарий! Я только что отредактировал 4-й вопрос, который на самом деле является самым острым.

3. Добавьте полный план запроса к вопросу.

4. Это то, что я вижу в журналах. Не хотели бы вы проинструктировать меня, как просмотреть полный план запроса? Когда я пытаюсь использовать функцию Compass Explain, я на самом деле ничего не получаю

5. Это хорошо документированная операция.

Ответ №1:

Это нормально, если разные машины обращаются к Mongo DB с разными версиями драйверов C #?

ДА.

Может ли быть, что Mongo Compass 1.23.0 постоянно агрегируется в моих коллекциях, поскольку у меня ужасная производительность, и как только я ее отключаю, Mongo DB, похоже, значительно улучшается.

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

Почему я не могу найти полный синтаксис find и объяснить его в журнале Mongo DB для запросов, которые завершились неудачно из-за тайм-аута?

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