CosmosDB与MongoDB的性能问题



我在Azure上安装了mongodb 4.0 API的CosmosDB。我在本地运行4.0。. x MongoDB实例。它们以相同的方式配置相同的数据集。

db.getCollection('route').aggregate(  [
{"$match": {"routes": {"$in": [
{"from": "ABC ", "to": "DEF"},  {"from": "GHI ", "to": "JKL"}  
]}, "_id": {"$ne": {"$oid": "6114f07807dbcb5a260bbe56"}}}}
])

当运行这个查询(提供了很多路由)时,CosmosDB的性能会大大降低。对于本地MongoDB实例,查询需要50ms,而在CosmosDB上则需要60秒。

当前RU限制设置为800RU,但是根据MAX使用率,运行此查询时不会超过15%。

如果逻辑分区上的工作负载消耗超过分配给该逻辑分区的吞吐量,那么您的活动将受到速率限制。当发生速率限制时,您可以提高数据库的总吞吐量或重试进程。

您应该探索降低费用大于50 Rus的查询的RU费用的方法。如果减少查询的RU开销,通常也会减少延迟。

Azure Cosmos DB中的查询优化大致分为以下几类:

•减少请求单元(RU)费用的优化查询

•仅减少延迟的优化

等:

  • 避免或最小化跨分区查询| Docs
  • 分区查询中的杠杆
  • 改善邻近
  • 增加配置吞吐量| Docs

因此,有关更多信息,请参阅:在使用MongoDB的Azure Cosmos DB API时解决查询问题

类似的讨论也发生在这个SO线程中。

最新更新