首页 > 解决方案 > 分区与 RU

问题描述

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

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

标签: azureazure-cosmosdb

解决方案


正如@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)。


推荐阅读