【问题标题】:What are PartitionKeyRangeId(s) in Cosmos DB?Cosmos DB 中的 PartitionKeyRangeId(s) 是什么?
【发布时间】:2021-10-22 08:38:32
【问题描述】:

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

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

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

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

据我了解,既然我们拥有的分区数量与拥有的文档数量一样多,那么我们应该会解决这个问题。我也不确定 PartitionKeyRangeID 0 意味着什么,因为我们应该至少有几千个分区

【问题讨论】:

    标签: azure-cosmosdb azure-cosmosdb-sqlapi orleans


    【解决方案1】:

    PartitionKeyRangeID对应物理分区。

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

    在这种情况下,您似乎只有一个物理分区,并且已被最大化。

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

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

    【讨论】:

    • 感谢您的回复。我在单独的分区键中拥有所有键(因为我将它用作 KV 存储)。这就是为什么我不明白为什么它总是将所有分区放在同一个物理服务器上
    • 因为你只有一个物理分区。物理分区代表一定数量的物理存储和计算能力。您不会为每个单独的分区键分配一个新的 物理 分区。如果需要,您将获得一个新的物理分区,因为您超出了单个物理分区可以提供的存储容量或吞吐能力。
    • 在您的情况下,您只是为您的工作负载配置了不足的 RU。物理分区 (1) 的数量与此无关。一旦您在多个物理分区上,您可能会遇到有关热分区的其他问题,但目前您只有一个,所以这很简单
    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 2018-05-28
    • 2015-08-30
    • 1970-01-01
    • 2017-04-13
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多