数据清理后如何降低CosmosDB分区数提升单分区可用RU?
前置逻辑说明
Cosmos DB的物理分区数量遵循只增不减的规则:你之前配置20k共享RU时,因为单个物理分区最大支持2500 RU/s的吞吐量上限,20k RU对应的最小物理分区数就是8个,触发了自动分区分裂。即便后续删除容器、下调RU,已经生成的物理分区也不会自动合并,吞吐量会均匀分摊到所有物理分区上,才会出现单分区只有625 RU的情况:
5k / 8 = 625 RU/s
无需迁移到新实例的解决方案
- 方案1:申请官方物理分区合并
直接在Azure门户提交对应Cosmos DB账户的支持工单,选择「性能」问题分类,说明当前数据库总数据量不足50GB(单个物理分区的默认存储上限),需要将现有8个物理分区合并为1个。审核通过后后台会自动执行合并操作,全程无业务停机,合并完成后5k RU会全部给到单个物理分区,单分区吞吐量可达5k RU/s。 - 方案2:同账户内新建数据库迁移
如果不想等待工单审核,可以在同一个Cosmos DB实例下新建一个配置5k自动缩放RU的共享数据库,初始状态下该数据库仅分配1个物理分区。之后将存量数据迁移到新库,完成后删除旧数据库即可,该操作无需更换实例,仅需修改业务侧的数据库连接名称即可,迁移成本极低。
注意事项
合并前请确认全库所有容器的总数据量确实低于50GB,否则无法完成分区合并;如果后续业务规模上涨,RU配置超过10k时,分区会再次自动分裂,吞吐量会重新分摊到新的物理分区上。
内容的提问来源于stack exchange,提问作者mluker
相关产品推荐
相关产品推荐

