【问题标题】:CosmosDB performance issue compared to MongoDBCosmosDB 与 MongoDB 相比的性能问题
【发布时间】:2021-08-12 11:16:31
【问题描述】:

我在 Azure 上安装了带有 Mongo 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 实例,查询需要 50 毫秒,而在 CosmosDB 上需要 60 秒。

当前 RU 限制设置为 800RU,但是根据 MA​​X 使用情况,在运行此查询时它不会超过 15%。

【问题讨论】:

    标签: mongodb azure azure-cosmosdb azure-cosmosdb-mongoapi


    【解决方案1】:

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

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

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

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

    • 只是减少延迟的优化

    如:

    • 避免或最小化跨分区查询 | Docs
    • 利用分区查询
    • 提高接近度
    • 增加预置吞吐量 | Docs

    因此,有关更多信息,请参阅:Troubleshoot query issues when using the Azure Cosmos DB API for MongoDB

    SO thread 也发生了类似的讨论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-17
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多