我很好奇Azure是否可以在ExecuteQuery上超时,或者如果存在内存限制导致ExecuteQuery返回的记录少于ExecuteQuerySegmented,则无提示错误。
当我运行ExecuteQuery时,我总共得到了1,223,749条记录。
当我运行ExecuteQuerySegmented时,我总共得到1,482,504条记录。
这两个查询是:
(ExecuteQuerySegmented位于处理令牌的do / while内部)
var queryResult = table.ExecuteQuerySegmented(new TableQuery<RecordType>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, PartitionValue, token);
var query = new TableQuery<RecordType>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, PartitionValue));
results.AddRange(table.ExecuteQuery(query));
答案 0 :(得分:0)
对Table服务API的调用可以包括在请求URI的timeout参数中指定的服务器超时间隔。如果在服务处理完请求之前服务器超时间隔已过,则服务将返回错误。
表服务操作的最大超时间隔为30秒。 Table服务会自动将超过30秒的任何超时减少到最大30秒。
Table服务按如下方式强制执行服务器超时:
查询操作:在超时间隔期间,查询最多可执行五秒钟。如果查询未在五秒间隔内完成,则响应包括用于在后续请求中检索剩余项目的继续令牌。有关详细信息,请参阅查询超时和分页。
我建议您查看以下documentation。
如果查询超过30秒,这可能意味着ExecuteQuery显示的记录是由超时引起的。