我正在使用适当的partitionkey在cosmos db中存储数百万个文档。我需要检索说500,000个文档来进行一些计算并在UI中显示输出,这应该在10秒钟内发生。 这可能吗?我已经尝试过了,但是花了将近一分钟。那么对于这种要求,这是正确的方法吗?
"id": "Latest_100_Sku1_1496188800",
"PartitionKey": "Latest_100_Sku1
"SnapshotType": 2,
"AccountCode": "100",
"SkuCode": "Sku1",
"Date": "2017-05-31T00:00:00",
"DateEpoch": 1496188800,
"Body": "rVNBa4MwFP4v72xHElxbvYkbo4dBwXaX0UOw6ZRFIyaBFfG/7zlT0EkPrYUcku+9fO/7kvca"
一个文档的大小:825字节
Am使用自动缩放4000吞吐量
查询统计信息-我正在使用2个查询。
查询1-从c中选择*,其中({ids})中的c.id 在这里,我在查询选项中使用PartitionKey。
查询统计信息 公制 值 要求收费 102.11俄罗斯卢布 显示结果 1-100 检索到的文件计数更多信息 200 检索的文档大小更多信息 221672字节 输出文件计数更多信息 200 输出文件大小更多信息 221972字节 索引命中文档数更多信息 200 索引查找时间更多信息 17.0499毫秒 文档加载时间更多信息 1.59毫秒 查询引擎执行时间更多信息 0.3401毫秒 系统功能执行时间更多信息 0.060000000000000005毫秒 用户定义的函数执行时间更多信息 0毫秒 文件写时间更多信息 0.16毫秒 往返行程 1
查询2- 从c中选择*,其中({keys})中的c.PartitionKey和c.DateEpoch> = {startDate.ToEpoch()}和c.DateEpoch <= {endDate.ToEpoch()}
查询统计信息 公制 值 要求收费 226.32 RU 显示结果 1-100 检索到的文件计数更多信息 200 检索的文档大小更多信息 176580字节 输出文件计数更多信息 200 输出文件大小更多信息 176880字节 索引命中文档数更多信息 200 索引查找时间更多信息 88.31毫秒 文档加载时间更多信息 4.2399000000000004毫秒 查询引擎执行时间更多信息 0.4701毫秒 系统功能执行时间更多信息 0.060000000000000005毫秒 用户定义的函数执行时间更多信息 0毫秒 文件写时间更多信息 0.19毫秒 往返行程 1
答案 0 :(得分:0)
查询1看起来不错。查询2最有可能受益于DateEpoch上的复合索引。我不确定UDF是什么,但是如果您要将日期转换为时代,则需要阅读新的博客文章New date and time system functions in Azure Cosmos DB
总体而言,在1-2个查询中检索500K文档进行一些计算似乎是一个奇怪的用例。通常,大多数人会预先计算值并使用change feed使用物化视图模式来保留它们。根据运行这两个查询的频率,通常可以更有效地利用计算资源。