Cosmos DB 中的 PartitionKeyRangeId 是什么?

What are PartitionKeyRangeId(s) in Cosmos DB?

我们最近开始测试 Cosmos DB 作为我们 Orleans 集群的持久存储。

我们的 Cosmos DB 场景是一个具有低延迟和大量替换、点读取和创建的键值存储。因此,我们的文档 ID 和分区键相同,因此基本上每个分区 1 个文档。

但是,在 Cosmos DB Insights 中,我们看到我们正在达到 100% 的规范化 RU 消耗:

当我们深入挖掘时,我们会看到一个热图,其中 PartitionKeyRangeID 0 上的 100% RU 消耗没有其他可用的 PartitionKeyRanges。

据我了解,由于我们的分区与我们的文档一样多,因此我们应该会遇到这个问题。我也不确定 PartitionKeyRangeID 0 表示什么,因为我们至少应该有几千个分区

PartitionKeyRangeID 对应物理分区。

您的逻辑分区键被散列并且散列 space 被划分为分配给每个物理分区的范围。例如,在具有两个分区的集合中,分区 1 的范围可能从 0x00000000000000 到 0x7FFFFFFFFFFFFFF,而分区 2 的范围从 0x80000000000000 到 0xFFFFFFFFFFFFFF。

在这种情况下,您似乎只有一个物理分区,并且已达到极限。

每个物理分区每秒最多支持 10k RU,因此如果您要将集合扩展到强制拆分(或者如果每个分区存储容量限制需要拆分),您会看到额外的物理分区。

预配吞吐量的 RU 预算在物理分区之间分配。当您有多个物理分区时,热图很有用,因此您可以识别某些物理分区已用尽而其他物理分区空闲的情况(这可能是由于热逻辑分区造成的)。