【问题标题】:Querying Azure DocumentDB with ExecuteNextAsync returns fewer than MaxItemCount使用 ExecuteNextAsync 查询 Azure DocumentDB 返回少于 MaxItemCount
【发布时间】:2015-10-14 08:55:00
【问题描述】:

我正在使用 FeedOption MaxItemCount 和 IDocumentQuery<T>::ExecuteNextAsync<T>() 查询 Azure DocumentDB 集合以设置“页面”大小。当使用较小的值(例如

但是,当我使用较大的 MaxItemCount 值(例如 500)执行时,我会返回各种结果,但不会超过 MaxItemCount。

现在,我很欣赏 MaxItemCount 是“最大项目数”,但我从文献中了解到边界因素是集合中的对象数量。其他东西显然限制了我的结果,我们也可以在 Azure 门户的文档资源管理器和查询资源管理器工具中看到相同的行为。

集合设置为“S3”,应支持 2500RU,查询资源管理器显示“成本”小于 100RU。

有人知道这里发生了什么吗?是什么限制了我的结果集?

【问题讨论】:

  • 你能提供一个重复问题的最小例子吗?
  • 限制结果的三个因素:(1) 最大响应大小为 1 MB。如果达到此值,则批处理 (2) 集合的吞吐量中不再包含更多结果。如果您达到基于 S1/S2/S3 的预置限制(带有一些缓冲区),您可能会获得少于批次和 (3) 如果您
  • @LarryMaccherone 不容易。这是服务的基础。创建一个集合。将您喜欢的任何内容放入其中 - 大量具有大量属性的文档。索要 1000 页,得到的少。将您的查询限制为少于所有字段,获取更多行。最终,您可以将查询限制为获得所有 1000 行。
  • @AravindRamachandran 和 (3) ???我们确实怀疑 1MB 的限制(尽管我在任何地方都找不到记录),但至少有一次我们收到了 12MB 的响应,这让我们有点吃惊。
  • ...达到 5 秒的时间限制 - 如果您的查询是扫描,则可能会发生这种情况,例如,如果您有 Property != Value。就像拉里提到的那样,如果您可以提供更多详细信息,我们可以准确地说明适用于您的特定场景的内容。

标签: azure azure-cosmosdb


【解决方案1】:

查询在 DocumentDB 上执行的时间是有限制的。这些限制包括查询的资源消耗(您可以将其与预置的 RU/sec * 5 sec + 未公开的缓冲区的数量相提并论)、响应大小 (1mb) 和超时 (5 sec)。如果达到这些限制,则可能会返回部分结果。

【讨论】:

  • 这与@AravindRamachandran 2 天前给出的答案几乎相同。由于像 Aravind 这样的 S/O 上的人坚持将他们的答案放在 cmets 中,我别无选择,只能表扬你。但是对于任何可能发生的模组 - 请提供将评论设置为“答案”的功能
  • @RichardHauer,aliuy 和我一起工作,所以一切都很好。我因在答案中提出问题而被否决,因此我使用 cmets 直到我可以确认问题/答案。希望模组注意到并解决这个问题!
  • 这是否仅适用于涉及分页的异步查询,或者也适用于要求“一次所有项目”的查询?
  • 今天,我能够在单个查询中获取 20K 文档,每个文档大小为 0.5Kb。我在集合中设置了 RU 1000。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多