如何获取CosmosDB图表集合上的请求指标?

时间:2018-03-22 10:51:11

标签: azure-cosmosdb

我想了解有关Gremlim查询的详细信息 - 因此我将PopulateQueryMetrics参数的FeedOptions属性设置为true

但是我回来的FeedResponse对象没有填充QueryMetrics属性。

var queryString = $"g.addV('{d.type}').property('id', '{d.Id}')";
var query = client.CreateGremlinQuery<dynamic>(graphCollection, queryString,
    new FeedOptions {
        PopulateQueryMetrics = true
    });
while (query.HasMoreResults)
{
    FeedResponse<dynamic> response = await query.ExecuteNextAsync();
    //response.QueryMetrics is null
}

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

根据您的描述,我使用Gremlin(图形)API创建了我的Azure Cosmos数据库帐户,我可能会遇到与您提到的相同的问题。我找到了一个教程Monitoring and debugging with metrics in Azure Cosmos DB并阅读了调试查询运行缓慢的原因部分,如下所示:

  

在SQL API SDK 中,Azure Cosmos DB提供查询执行统计信息。

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
 UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName), 
 “SELECT * FROM c WHERE c.city = ‘Seattle’”, 
 new FeedOptions 
 { 
 PopulateQueryMetrics = true, 
 MaxItemCount = -1, 
 MaxDegreeOfParallelism = -1, 
 EnableCrossPartitionQuery = true 
 }).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();

// Returns metrics by partition key range Id 
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;

然后,我通过上面的SQL API查询了我的Cosmos DB Gremlin(图)帐户,我检索了QueryMetrics如下:

enter image description here

注意:我还检查过您可以像SELECT * FROM c where c.id='thomas' and c.label='person'一样指定SQL表达式。对于添加新的Vertex,我不知道如何构造SQL表达式。此外,CreateDocumentAsync方法不支持FeedOptions参数。

根据我的理解,PopulateQueryMetrics设置可能仅在使用SQL API时有效。您可以添加反馈here