【问题标题】:Azure RUs on cosmosDBcosmosDB 上的 Azure RU
【发布时间】:2019-01-16 07:04:12
【问题描述】:

我正在尝试了解 RU 是如何工作的,以优化对数据库的请求。

我有一个简单的查询,在哪里按 id 选择

SELECT * FROM c WHERE c.id='cl0'

该查询花费277.08 RUs

然后我有另一个查询,我通过另一个属性选择

SELECT * FROM c WHERE c.name[0].id='35bfea78-ccda-4cc5-9539-bd7ff1dd474b' 

该查询花费2.95 RUs

我不明白为什么这两个查询之间消耗的 RU 有这么大的差异。

两个查询返回完全相同的结果

[
    {
        "label": "class",
        "id": "cl0",
        "_id": "cl0",
        "name": [
            {
                "_value": "C0.Iklos0",
                "id": "35bfea78-ccda-4cc5-9539-bd7ff1dd474b"
            }
        ],
        "_rid": "6Ds6AJHyfgBfAAAAADFT==",
        "_self": "dbs/6Ds4FA==/colls/6Ds6DFewfgA=/docs/6Ds6AJHyfgBdESFAAAAAAA==/",
        "_etag": "\"00007200-0000-0000-0000-w3we73140000\"",
        "_attachments": "attachments/",
        "_ts": 1528722196
    }
]

【问题讨论】:

  • 您的集合中的所有文档是否具有完全相同的架构?是否有可能您的集合中有很多文档具有 id 属性,但具有 name[0].id 属性的文档却更少?
  • 嗨,现在有进展吗?如果您认为我的回答对您有帮助,可以将其标记为已回答。非常感谢

标签: azure azure-cosmosdb


【解决方案1】:

我以前遇到过类似的问题,所以您不是唯一遇到此问题的人。我给你提供两种解决方案。

1.sql SELECT * FROM c WHERE c.id='cl0' 查询整个数据库的文档。如果您可以为正确的字段设置分区键,它将大大提高您的性能。 您可以参考这个doc 了解如何选择分区键。

2.我在帖子中创建了以下答案:Azure DocumentDB Query by Id is very slow

Microsoft 支持人员已作出回应,他们已解决该问题。他们为该集合添加了 IndexVersion 2。不幸的是,它还不能从门户获得,并且新创建的帐户/收藏仍然没有使用新版本。您必须联系 Microsoft 支持来更改您的帐户。

我建议您提交反馈here 以跟踪此公告。

希望对你有帮助。

-- 编辑

要升级到索引版本 2,请使用以下代码

var  collection = (await client.ReadDocumentCollectionAsync(string.Format("/dbs/{0}/colls/{1}", databaseId, collectionId))).Resource;                
collection.SetPropertyValue("IndexVersion", 2);
var replacedCollection = await client.ReplaceDocumentCollectionAsync(collection);

【讨论】:

  • 好的,感谢您的回答和可能的解决方案。我会试试的。
  • 我添加了代码来展示如何升级到索引 v2,它在同行评审 Q 中,我认为不需要添加新答案
【解决方案2】:

RU 消耗量取决于您的文档大小和您的查询,我强烈推荐下面的查询指标链接。如果您想调整查询或想了解延迟检查查询 Feed 详细信息

x-ms-documentdb-query-metrics: totalExecutionTimeInMs = 33.67; queryCompileTimeInMs = 0.06; queryLogicalPlanBuildTimeInMs = 0.02; queryPhysicalPlanBuildTimeInMs = 0.10; queryOptimizationTimeInMs = 0.00; VMExecutionTimeInMs = 32.56; indexLookupTimeInMs = 0.36; documentLoadTimeInMs = 9.58; systemFunctionExecuteTimeInMs = 0.00; userFunctionExecuteTimeInMs = 0.00; retrievedDocumentCount = 2000; retrievedDocumentSize = 1125600; outputDocumentCount = 2000;writeOutputTimeInMs=18.10;indexUtilizationRatio=1.00 x-ms-request-charge: 604.42

https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sql-query-metrics

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2018-01-08
    相关资源
    最近更新 更多