【问题标题】:Query performance measure Cosmos DB查询性能度量 Cosmos DB
【发布时间】:2017-08-11 10:58:44
【问题描述】:

我是 Cosmos DB 的新手,我尝试对 cosmos db 集合 (documentdb api) duo c#-sdk 进行一些性能测量。我尝试使用一个简单的秒表来做到这一点。但是当我使用以下代码进行查询时,我总是得到 14 毫秒到 33 毫秒之间波动的测量数据。如果我查询关于一个或 10000 个数据的记录,它是独立的,如果我查询分区键值、另一个索引值或启用 EnableScaninQuery 的未索引值,它也是独立的。所以我猜这段代码有问题吗?我希望收集 10000 条未索引数据的记录而不是查询一个分区键数据的时间要长得多。 FeedOptions 还提供 PopulateQueryMetrics 方法。有没有办法在我的 c# 应用程序中使用这个指标来访问查询时间?

FeedOptions asd = new FeedOptions
        {
            EnableCrossPartitionQuery = true,
            // EnableScanInQuery = true,
            //PopulateQueryMetrics = true,
            MaxItemCount = 500,
            MaxBufferedItemCount = 10000,
            MaxDegreeOfParallelism = -1
        }; 
watch.Start();
            try
            {
                IDocumentQuery<Item> query = client.CreateDocumentQuery<Item>(
                    UriFactory.CreateDocumentCollectionUri(Database, coll), asd)
                    .Where(m => m.userid == 999999).AsDocumentQuery<Item>();

                WriteToConsoleAndPromptToContinue("Query took {0} ms ", watch.ElapsedMilliseconds);
                watch.Stop();

【问题讨论】:

  • 您的数据库访问客户端和 Azure 上的 CosmosDb 实例之间的网络距离是多少?

标签: c# performance querying azure-cosmosdb


【解决方案1】:

尝试遍历整个结果集以产生可靠的结果。

while (query.HasMoreResults)  
{
    var result = await query.ExecuteNextAsync<Item>();

    // Process paged results
}

【讨论】:

  • 感谢您的回答,我已经这样做了,以便向我打印有关每个查询项目的一些信息。但是我可以通过哪种方式测量此处理的时间?
  • 您的问题中显示的代码测量了所有数据库查询结果在您的客户端代码中具体化之前经过的时间。如果您在 WriteToConsoleAndPromptToContinue() 测量语句之前插入我建议的代码块,我认为您将获得实际的时间安排。您还应该计算返回的文档以验证您的查询。
  • 谢谢。但我不想处理结果,我只想查询一些文档并为此测量时间。使用您的示例执行此操作会导致在 5000 毫秒等时间内基于一个元素的分区键进行查询。 SLA 允许在 10 毫秒以下的查询而不对其进行处理。所以我猜我之前的测量结果大约 14-33ms 可能是现实值(基于客户端延迟),只查询值而不处理它们?
  • 如果您看到查询和实现单个中型 (1K) 对象的查询时间为 5000 毫秒,那么您的测试设置有问题。与其他查询机制相比,在客户端实例化 DocumentDb json 查询结果的 CPU 工作量很小。您是否通过测量第二个而不是第一个测试查询来消除 API 和连接预热成本?
  • 对不起,我不能真正关注你。消除 API 和连接预热成本是什么意思?我使用的唯一时间测量是你可以在原始帖子中看到的这个
猜你喜欢
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 2020-09-24
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多