【发布时间】:2017-09-12 22:04:25
【问题描述】:
我对分区如何影响 Azure Cosmos DB 的大小限制和吞吐量值感到困惑(在我们的例子中,我们使用的是 documentdb)。如果我正确理解documentation。
对于分区集合,10G 存储限制适用于每个分区吗?
吞吐量值 ex。 400RU/S适用于每个分区,不是集合?
【问题讨论】:
标签: azure azure-cosmosdb
我对分区如何影响 Azure Cosmos DB 的大小限制和吞吐量值感到困惑(在我们的例子中,我们使用的是 documentdb)。如果我正确理解documentation。
对于分区集合,10G 存储限制适用于每个分区吗?
吞吐量值 ex。 400RU/S适用于每个分区,不是集合?
【问题讨论】:
标签: azure azure-cosmosdb
什么是集合?
集合是一组文档及其关联的 JavaScript 应用程序逻辑。集合是一个计费实体,其中成本由吞吐量和使用的存储决定。集合可以跨越一个或多个分区或服务器,并且可以扩展以处理几乎无限量的存储或吞吐量。
集合也是 Azure Cosmos DB 的计费实体。根据预置吞吐量和已用存储空间,每个集合按小时计费。有关详细信息,请参阅 Azure Cosmos DB 定价。
有关详细信息,请参阅下面引用中的粗体文本:
预置吞吐量
在任何规模下,您都可以存储数据和预置吞吐能力。 每个容器按小时计费,基于存储的数据量(以 GB 为单位)和预留的吞吐量,以 100 RUs/秒为单位,最低为 400 RUs/秒。无限容器每个分区至少有 100 RU/秒。
取自Request Units in Azure Cosmos DB:
当开始一个新的集合、表格或图表时,您可以指定您希望保留的每秒请求单位数(RU 每秒)。根据预配的吞吐量,Azure Cosmos DB 分配物理分区来托管您的集合,并随着数据的增长跨分区拆分/重新平衡数据。
【讨论】:
此处的其他答案为吞吐量配置提供了一个很好的起点,但未能触及文档中未经常提及的重要点。
您的吞吐量实际上是按集合中的物理分区数划分的。因此,对于为具有 10 个物理分区的 1000RU/s 配置的多分区集合,它实际上是每个分区 100RU/s。因此,如果您有更频繁地访问的热分区,即使您没有超过分配给集合的总 RU,您也会收到限制错误。
对于单个分区集合,您显然会获得为该分区分配的完整 RU,因为它是唯一的。
如果您使用多分区集合,则应努力选择具有均匀访问模式的分区键,以便您的工作负载可以均匀分布在底层分区中,而不会出现瓶颈。
【讨论】:
- 对于分区集合,10G 存储限制适用于每个分区吗?
没错。分区集合中的每个分区的大小最大为 10GB。
- 整个值前。 400RU/S 适用于每个分区,而不是集合?
吞吐量是在集合级别,而不是在分区级别。分区集合的进一步最小 RU/S 是 2500 RU/S 而不是 400RU/S。 400RU/S 是未分区集合的默认值。
【讨论】: