【问题标题】:Performance degradation in mongodb aggregation-frameworkmongodb 聚合框架中的性能下降
【发布时间】:2018-10-06 18:17:32
【问题描述】:

我使用的是 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"}
    }
  }
}

我的问题:随着状态集合变得越来越大,管道聚合变得越来越慢,即使添加的文档超出了匹配过滤器中的日期。 使用这个索引,我真的希望随着集合变大,性能不会有太大变化。

其他信息:

  • states 集合中的文档并不多(大约 200,000 个),其中大约 20,000 个被上述过滤器匹配。
  • 集合(和其他集合)中的索引只有几兆字节,很容易放入内存中。
  • 聚合管道不会在数据库中插入任何文档。

谁能建议我应该调查什么来解释随着集合的增长而性能急剧下降(新文档超出 $match 的日期范围)?

谢谢。

【问题讨论】:

    标签: mongodb aggregation-framework mongodb-indexes


    【解决方案1】:

    解决了。随着时间的推移,管道中的另一个阶段是处理更多的数据。索引没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      相关资源
      最近更新 更多