Ухудшение производительности в агрегации-структуре mongodb - PullRequest
0 голосов
/ 06 октября 2018

Я использую mongodb 3.6.8.

У меня есть коллекция (называемая states) с полем ObjectId (sensor_id), date, а также несколько другихполя.Я создал составной индекс для коллекции:

db.states.createIndex({ "sensor_id" : 1, "date" : 1 });

Я использую структуру агрегации со стадией совпадения, например:

{ 
  "$match" : {
    "sensor_id" : { "$oid" : "5b8fd62c4f0cd13c05296df7"},
    "date" : { 
        "$gte" : { "$date" : "2018-10-06T04:19:00.000Z"}, 
         "$lt" : { "$date" : "2018-10-06T10:19:09.000Z"}
    }
  }
}

Моя проблема: по мере увеличения коллекции состоянийагрегация конвейера становится все медленнее и медленнее, даже если добавляемые документы выходят за пределы дат в фильтре совпадений. Используя этот индекс, я действительно ожидал, что производительность не будет сильно изменяться по мере увеличения коллекции.

Другая информация:

  • Коллекция состояний не имеет оченьмногие документы (около 200 000), из которых около 20 000 соответствуют вышеуказанному фильтру.
  • Индексы в коллекции (и других коллекциях) занимают всего несколько мегабайт и легко помещаются в памяти.
  • Конвейер агрегации не вставляет никаких документов в базу данных.

Может кто-нибудь предложить то, что я должен исследовать, чтобы объяснить довольно резкое падение производительности по мере роста коллекции (с новыми документами за пределами диапазона дат в$ match)?

Спасибо.

1 Ответ

0 голосов
/ 07 октября 2018

решаемая.Другим этапом в процессе обработки стала обработка всех новых данных с течением времени.С индексами все в порядке.

...