Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么CloudTable.ExecuteQuerySegmentedAsync只返回最大1k实体的一小部分?_C#_.net Core_Azure Storage_Azure Table Storage - Fatal编程技术网

C# 为什么CloudTable.ExecuteQuerySegmentedAsync只返回最大1k实体的一小部分?

C# 为什么CloudTable.ExecuteQuerySegmentedAsync只返回最大1k实体的一小部分?,c#,.net-core,azure-storage,azure-table-storage,C#,.net Core,Azure Storage,Azure Table Storage,由于我们有一个事件源系统与预测一起工作,因此我们经常需要查询事件存储库中的大量实体来(重新)构建我们的状态。 这是通过以下方式实现的: 1.在PartitionKey、RowKey上查询实体,偶尔进行额外过滤 2.处理结果段 3.重复此操作直到continuationtoken==null 由Azure函数(V2)运行,即Windows.Azure.Storage 9.3.1 我们遇到的问题是,ExecuteQuerySegmentedAsync返回的段大小在200到700个实体之间变化。我只需

由于我们有一个事件源系统与预测一起工作,因此我们经常需要查询事件存储库中的大量实体来(重新)构建我们的状态。 这是通过以下方式实现的:

1.在
PartitionKey
RowKey
上查询实体,偶尔进行额外过滤
2.处理结果段
3.重复此操作直到
continuationtoken==null

由Azure函数(V2)运行,即Windows.Azure.Storage 9.3.1

我们遇到的问题是,
ExecuteQuerySegmentedAsync
返回的段大小在200到700个实体之间变化。我只需在
PartitionKey
上进行简单的查询,就可以重现这一点,而无需进行额外的筛选。见:

文档状态
ExecuteQuerySegmentedAsync
最多可返回1k个实体。你知道为什么我们没有达到这个数字吗?这将(预期)显著提高性能

更新:未达到5秒的最大查询时间,获取段大约需要200-300毫秒

文档状态ExecuteQuerySegmentedAsync最多可返回1k 实体的定义。你知道为什么我们没有达到这个数字吗

对表的每个查询最多允许执行5秒。在这5秒钟过后,表服务将返回它能够根据查询找到的尽可能多的实体(最多1000个实体)。很有可能在这5秒钟内没有找到任何实体,在这种情况下,它将返回零个带有延续标记的实体

由此:

对表服务的查询最多可返回1000个 一次执行一个实体,最多可执行五秒钟。如果 如果查询没有包含,则结果集包含1000多个实体 在五秒钟内完成,或者如果查询跨越分区 边界,响应包括包含一组 延续令牌。延续令牌可用于构造 对下一页数据的后续请求。更多信息 关于延续标记,请参阅查询超时和分页


谢谢很好,这可能是问题所在。只需对完全相同的查询计时,获取一个段通常需要大约300-400毫秒。