适用对象: NoSQL
MongoDB
Azure Cosmos DB 的吞吐量重新分发功能能够跨物理分区重新分发预配的吞吐量。 本文解答有关跨分区重新分发 Azure Cosmos DB 吞吐量的常见问题。
可在哪些资源上使用此功能?
此功能仅支持用于 MongoDB 帐户的 SQL 和 API。 支持具有专用吞吐量的共享吞吐量数据库和容器/集合(手动或自动缩放)。 此功能不适用于无服务器帐户。
如何注册预览功能?
无需注册预览版。 要使用此功能,只需使用 Azure PowerShell 或 Azure CLI 中的相关命令,在资源的物理分区之间重新分配吞吐量。
Azure PowerShell 和 Azure CLI 中哪个版本的 Azure Cosmos DB 功能支持此功能?
只有 Azure PowerShell 预览版(版本 2.0.2-preview 或更高)[https://www.powershellgallery.com/packages/Az.CosmosDB/2.0.2-preview] 和 Azure CLI 的最新预览版支持跨物理分区重新分配 RU/s 的功能。
一个请求中可以更改的最大物理分区数是多少?
- 单个请求中可以包含的最大源分区和物理分区数分别为 20 个。
- 必须在每个请求中至少提供一个源物理分区和一个目标物理分区。 源分区必须具有足够的 RU/秒才能重新分发到目标分区。
- 每个目标物理分区所需的 RU/秒不能超过 10,000 RU/秒或整个资源的总 RU/秒。 如果所需的 RU/秒大于整个资源的 RU/秒,请在重新分发 RU/秒之前先增加总 RU/秒。
对于调用以跨分区重新分配吞吐量的频率是否有限制?
每分钟最多可以发出五个请求,以跨分区重新分配吞吐量。
更改整个 RU/秒时,RU/秒分布会发生什么情况?
如果降低 RU/秒,则每个物理分区将获得新 RU/秒的等效分数 (
current throughput fraction * new RU/s
)。 例如,假设你有一个包含 6000 RU/秒和 3 个物理分区的集合。 将其纵向缩减到 3000 RU/秒。纵向缩减前(6000 RU/秒) 纵向缩减后(3000 RU/秒) 总 RU/秒的分数 P0:1000 RU/秒 P0:500 RU/秒 1/6 P1:4000 RU/秒 P1: 2000 RU/s 2/3 P2:1000 RU/秒 P2:500 RU/秒 1/6 如果增加 RU/s,每个物理分区的 RU/s =
MIN(current throughput fraction * new RU/s, 10,000 RU/s)
。 物理分区上的 RU/s 永远不得超过 10,000 RU/s。例如,假设你有一个包含 6000 RU/秒和 3 个物理分区的集合。 纵向扩展到 12,000 RU/秒:
纵向扩展前(6000 RU/秒) 纵向扩展后(12,000 RU/秒) 总 RU/秒的分数 P0:1000 RU/秒 P0:2000 RU/秒 1/6 P1:4000 RU/秒 P1:8000 RU/秒 2/3 P2:1000 RU/秒 P2:2000 RU/秒 1/6
为什么我看到容器上的整体 RU/s 与所有物理分区的 RU/s 总和之间存在差异?
如果纵向扩展任何单个分区的整体 RU/s,可能会出现这种差异,
(current RU/s per partition * new container RU/s)/(old container RU/s)
大于 10,000 RU/s。 如果通过将 RU/s 增加到currentNumberOfPartitions * 10,000 RU/s
以上来触发分区拆分或增加 RU/s 而不触发分区拆分,就会出现这种差异。建议在纵向扩展后重新均匀分配吞吐量。 否则,可能无法使用预配(且正在计费)的所有 RU/s。
若要检查此方案是否适用于资源,请使用 Azure Monitor 指标。 将 ProvisionedThroughput(使用手动吞吐量时)或 AutoscaleMaxThroughput(使用自动缩放时)指标的值与 PhysicalPartitionThroughput 指标的值进行比较。 如果 PhysicalPartitionThroughput 的值小于相应的 ProvisionedThroughput 或 AutoscaleMaxThroughput,则在重新分配之前将 RU/秒重置为均匀分布,或者将资源的吞吐量降低到 PhysicalPartitionThroughput 的值。
例如,假设你有一个包含 6000 RU/秒和 3 个物理分区的集合。 将其纵向扩展到 24,000 RU/s。 纵向扩展后,所有分区的总吞吐量仅为 18,000 RU/s。 这种分布意味着虽然是按 24,000 RU/s 计费,但只能获得 18,000 RU/s 的有效吞吐量。 由于 RU/s 被重新均匀分配,每个分区将获得 8000 RU/s,我们也可以根据需要再次重新分配 RU/s。 我们还可以选择将整体 RU/s 降低到 18,000 RU/s。
纵向扩展前(6000 RU/秒) 纵向扩展到 24,000 RU/s 后(有效 RU/s = 18,000 RU/s) 总 RU/秒的分数 P0:1000 RU/秒 P0:4000 RU/s 1/6 P1:4000 RU/秒 P1:10000 RU/s(分区不能超过 10,000 RU/s) 2/3 P2:1000 RU/秒 P2:4000 RU/s 1/6