跨分区

时间:2016-11-07 21:37:09

标签: azure-cosmosdb

我创建了2个空的documentDB集合:1)带有单个分区,2)带有多个分区。接下来在这两个集合上插入一行并运行扫描(从c中选择*)。我发现单个分区占用了〜2RU,而多分区占用了约50RU。它不仅仅是RU,而且多分区的读取延迟大约慢了20倍。那么,当跨分区查询时,多分区总是具有高读取延迟吗?

1 个答案:

答案 0 :(得分:1)

您可以将多分区集合的延迟与单分区集合相同。我们以扫描为例:

  • 如果您有非空集合,那么性能 将与从其中一个分区读取的数据相同。从第一个分区读取数据,并按顺序在分区之间分页。
  • 如果您使用MaxDegreeOfParallelism选项,您将获得相同的低 延迟。请注意,默认情况下,查询执行是按顺序执行的 优化具有较大数据集的查询。如果你使用 并行选项,查询将具有相同的低延迟
  • 如果您使用分区键=值上的过滤器进行扫描,那么您将获得 即使没有并行性也能保持相同的性能。

确实在查询期间触摸的每个分区都有一个小的RU开销(每个分区约2个RU用于查询解析)。请注意,这不会随查询大小而增加,即使您的查询返回,例如1000个文档,查询将是1000 + P * 2 RU用于分区集合而不是1000个RU。您可以通过在分区键上包含过滤器来消除此开销。