每个数据库(共享的RU)配置时,CosmosDB如何分配吞吐量

时间:2019-05-28 11:07:46

标签: azure azure-cosmosdb

如果我将Cosmos DB设置为使用共享RU,则我有一个问题,无法理解预配置吞吐量的分配工作-在数据库级别设置RU。

我知道在容器(集合)级别上设置吞吐量时,逻辑分区之间会划分吞吐量,例如如果收集已设置吞吐量为400 RU / s和10个逻辑分区,则每个分区的吞吐量为400/10 = 40 RU / s。

但是何时为每个数据库设置吞吐量呢? 我发现的唯一文档是https://docs.microsoft.com/en-us/azure/cosmos-db/set-throughput#set-throughput-on-a-database 据我所知,区别是物理分区不是专用于单个容器,而是可以承载来自不同容器的逻辑分区-这是否意味着吞吐量在所有集合/容器的所有逻辑分区之间分配?

例如:我有一个吞吐量为1000 RU / s和2个集合的数据库,一个具有3个逻辑分区,第二个具有7个逻辑分区,因此每个逻辑的吞吐量除以1000 /(3 + 7)= 100 RU / s分区?

或 是否为所有集合/分区总计保留吞吐量?例如有一个数据库的1000 RU / s,一个逻辑分区使用800RU / s,另一个逻辑分区使用200RU / s(无论收集什么),那么只要它们的总和不超过1000 RU / s,就可以了吗?

也许问题很简短-共享吞吐量是在逻辑分区之间平均分配的(与在收集级别上设置的时间相同)还是没有(某种程度上不同)?

1 个答案:

答案 0 :(得分:0)

感谢您的反馈。如果要在数据库级别配置吞吐量。您不能保证其中每个容器的吞吐量,除非您还配置了容器的吞吐量。

在数据库内部创建的具有预配置吞吐量的所有容器都必须使用分区键来创建。在任何给定时间点,分配给数据库内某个容器的吞吐量都会分布在该容器的所有逻辑分区上。如果您的容器共享在数据库上配置的预配置吞吐量,则无法有选择地将吞吐量应用于特定的容器或逻辑分区。

您可以遵循此URL,以减轻在数据库和容器级别设置吞吐量的影响。 Set throughput on a database and a container

希望有帮助。