Cosmos DB查询指标

时间:2018-11-09 02:36:02

标签: c# azure-cosmosdb azure-cosmosdb-sqlapi azure-cosmosdb-mongoapi

我对Cosmos DB API返回的QueryMetrics有疑问。

根据Azure门户,我的数据库中有5个分区。查询CosmosDB以确认和检查昂贵的查询时,我在PopulateQuery=true中设置了FeedOptions。因为这是一个SELECT *查询,所以我希望每个分区都使用正确的分区ID返回5个查询指标。

我确实获得了5个不同的查询指标,但每个指标都具有相同的partitionId。

这是错误还是我做错了什么。请参见下面的示例。

DocumentClient documentClient = null;
DocumentCollection collection = null;

FeedOptions feedOptions = new FeedOptions
{
    EnableCrossPartitionQuery = true,
    PopulateQueryMetrics = true
    MaxItemCount = -1,
    MaxDegreeOfParallelism = 5,
    MaxBufferedItemCount = 100
};

string query = "SELECT * FROM docs
         WHERE docs.Type = @docType AND
            (docs.A - docs.B - (IS_NULL(docs.C)?0:docs.C))
                / (IS_NULL(docs.Info.D)?1:docs.Info.D.E)
                > @threshold"
IDocumentQuery<dynamic> documentQuery = documentClient.CreateDocumentQuery(Collection.SelfLink, query, feedOptions).AsDocumentQuery();

while (documentQuery.HasMoreResults)
{
    FeedResponse<dynamic> feedResponse = await documentQuery.ExecuteNextAsync();
    IReadOnlyDictionary<string, QueryMetrics> partitionIdToQueryMetrics = feedResponse.QueryMetrics;
    foreach (KeyValuePair<string, QueryMetrics> kvp in partitionIdToQueryMetrics)
    {
        string partitionId = kvp.Key;
        QueryMetrics queryMetrics = kvp.Value;
        DoSomeLoggingOfQueryMetrics(query, partitionId, queryMetrics);
    }
}

数据按ID分区。该ID不是查询的一部分。

上述查询中所有5次的PartitionID均为0。但是其他所有指标都不同。

这不应该是0、1、2、3、4。

0 个答案:

没有答案