【问题标题】:Partitions vs RUs分区与 RU
【发布时间】:2018-10-22 22:23:53
【问题描述】:

场景:我们有大约 800,000 名用户在使用我们的系统。 我们需要为每个用户每 2 周存储 5-6KB 的报告。任何时候只有少数用户 (50-100) 使用该系统可以访问这些报告。我认为通过 UserId 进行“分区”是有意义的,因为数据会非常均匀地分布,并且一次总是会在 1 个分区上进行查询。

问题:我的困惑是,假设我们为这个集合分配了 5,000RU 的吞吐量。这些 RU 在所有分区中是否具有弹性?还是始终固定为 5,000RUs/800,000 个分区 = 0.00625 RUs/分区?

【问题讨论】:

    标签: azure azure-cosmosdb


    【解决方案1】:

    正如@nick 提到的,RU 是跨物理 分区而不是逻辑分区分配的。您可能在同一个物理分区中有一个或多个逻辑分区,但每个底层物理分区的上限为 10GB 和 10,000 个 RU。

    如果您分配了 5,000 个 RU,则这些 RU 将均匀分布在分配的物理分区中。如果您创建一个以 5,000 RU 作为初始分配的集合,您可能会发现您有 5 个物理分区,每个分区有 1,000 RU。您可以在数据库的指标刀片中检查这一点(查看单个集合的吞吐量)。

    当物理分区达到其 10GB 限制或 RU 达到 10,000 RU 容量时,物理分区的数量将重新排列或增加。然后将逻辑分区拆分为不同的(或新的)物理分区。如果物理分区数量增加,但不增加 RU,每个分区的 RU 将减少一点(例如,如果你从 5 个物理分区变为 10 个,你的 5,000 RU 现在将被分成 10 路而不是 5 路,这意味着 500 RU /分区而不是 1,000)。

    【讨论】:

      【解决方案2】:

      在每个物理分区之间平均共享。你在想的是逻辑分区,这是没有意义的。文档中不太清楚,但您可以找到类似here 的提示。

      另外这篇较早的帖子解释了: "The provisioned throughput of a collection is distributed evenly among the partitions within a collection."

      即使这篇文章很旧(2 年),我也找不到任何其他说明。测试它也会给你同样的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 2018-04-26
        • 1970-01-01
        相关资源
        最近更新 更多