鉴于Azure DocumentDB使用请求单位作为吞吐量的度量,我希望确保我的查询尽可能使用最少量的RU来提高吞吐量。是否有工具可以告诉我查询将采用多少个RU以及查询是否实际使用了索引?
答案 0 :(得分:2)
正如您所发现的,某些工具将在完成查询后提供RU。这也可以通过编程方式获得,因为响应中返回了var queryIterator = client.queryDocuments(collLink, querySpec );
queryIterator.executeNext(function (err, results, headers) {
if (err) {
// deal with error...
} else {
// deal with payload...
var ruConsumed = headers['x-ms-request-charge'];
}
});
标头,并且可以通过DocumentDB SDK轻松检索。
例如,这是一个使用JS / node显示RU检索的片段:
dbs/<databaseId>/colls/<collectionId>
关于索引的问题,以及确定属性是否已编入索引(然后应该使用或不使用索引回答有关查询的问题):您可以查询集合,该集合返回响应中的索引详细信息报头中。
例如:给定一些路径var collLink = 'dbs/' + databaseId+ '/colls/'+ collectionId;
client.readCollection(collLink, function (err, coll) {
if (err) {
// deal with error
} else {
// compare indexingPolicy with your property, to see if it's included or excluded
// this just shows you what these properties look like
console.log("Included: " + JSON.stringify(coll.indexingPolicy.includedPaths))
console.log("Excluded: " + JSON.stringify(coll.indexingPolicy.excludedPaths))
}
});
:
includedPaths
您会看到excludedPaths
和Included: [{"path":"/*","indexes":[{"kind":"Range","dataType":"Number","precision":-1},{"kind":"Hash","dataType":"String","precision":3}]}]
Excluded: []
看起来像这样,然后您可以以任何您认为合适的方式搜索您的指定财产:
.travis.yml
答案 1 :(得分:0)
我发现DocumentDb Studio显示了为每个查询提供RU的响应标头。
答案 2 :(得分:0)
另一个选项是使用启用了跟踪收集选项的模拟器。 https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator
我试图分析LINQ聚合查询,目前c#SDK似乎不可能。
使用模拟器的跟踪输出,我能够识别请求费用和许多其他指标。有很多数据需要通过。
我发现请求费用存储在此事件密钥下
DocDBServer/Transport_Channel_Processortask/Genericoperation
示例输出:
ThreadID="141,928" FormattedMessage="EndRequest DocumentServiceId localhost, ResourceType 2, OperationType 15, ResourceId 91M7AL+QPQA=, StatusCode 200, HRESULTHex 0, ResponseLength 61, Duration 70,546, HasQuery 1, PartitionId a4cb495b-38c8-11e6-8106-8cdcd42c33be, ReplicaId 1, ConsistencyLevel 3, RequestSessionToken 0:594, ResponseSessionToken 594, HasContinuation 0, HasPreTrigger 0, HasPostTrigger 0, IsFeedUnfiltered 0, IndexingDirective 5, XDate Fri, 09 Jun 2017 08:49:03 GMT, RetryAfterMilliseconds 0, MaxItemCount -1, ActualItemCount 1, ClientVersion 2017-02-22, UserAgent Microsoft.Azure.Documents.Common/1.13.58.2, RequestLength 131, NetworkBucket 2, SubscriptionId 00000000-0000-0000-0000-000000000000, Region South Central US, IpAddress 192.168.56.0, ChannelProtocol RNTBD, RequestCharge 51.424, etc...
然后可以将其与来自包含查询信息的另一个事件的数据相关联:
DocDBServer/ServiceModuletask/Genericoperation
请注意,您需要perfview来查看ETL日志文件。有关详情,请参阅此处: https://github.com/Azure/azure-documentdb-dotnet/blob/master/docs/documentdb-sdk_capture_etl.md