使用Azure Cosmos DB(来自Java的mongo界面)时奇怪的RU / s使用情况

时间:2019-01-21 07:09:32

标签: azure-cosmosdb azure-cosmosdb-mongoapi

我们正在使用Azure cosmos DB,并且正在使用mongo API从Java访问它

一些通常使用大约4 RU的简单查询有时大约需要1500 RU,而我们得到的消息是“速率太大”。

如果我们从azure门户用户界面中进行相同的查询,我们将始终获得较低的RU消耗

示例文档:

{
    "_id": {
        "$oid": "5c40a6e3f6fe4d1fec5f092e"
    },
    "attempts": 0,
    "status": {

        "confirmed": false,
        "nSent": true
    }
    ...
    rest of non relevant fields
}

如果我将查询翻译为SQL,将如下所示:

SELECT * FROM c WHERE c.status.confirmed = true and (c.status.nSent=null or c.status.nSent=false) and (c.attempts=null or c.attempts<10) 

2个重要说明:

  1. 在此查询中,我们不使用分片键。我不知道这里是否有用
  2. 请注意,我们检查c.status.nSent不存在(= null)或它等于false。如果删除检查c.status.nSent为null的部分,则查询将正常进行。这是奇怪的部分...

天青在其日志中看到的查询示例:

(((r1["p1"]["p2"] = true) AND (((r1["p1"]["p3"] ?? null) = null) OR (r1["p1"]["p3"] = false))) AND ((((r1["p4"] ?? null) = null) OR (r1["p4"] <= 10)) AND (r1["p5"] >= 67)))","parameters":[]}"}}

我也试图替换查询的这一部分

(c.status.nSent=null or c.status.nSent=false)

(c.status.nSent!=true)

希望它也适用于不具有此属性但结果相同的文档

我们的平均RU / s使用率为40 RU / s,我们的限制为4000 RU / s,因此此查询中应该有很多备用RU / s

除此以外,我们看到以下内容:

RequestCharge: 0.38

0 个答案:

没有答案