(何时)扩大 CosmosDb 分区以避免跨分区查询更好?

(When) is it better to enlarge CosmosDb partitions to avoid cross-partition queries?

从文档和其他 CosmosDb 文章中可以清楚地看出,较小的分区有很多好处,但跨分区查询的成本也更高。那么扩大分区以避免这些跨分区查询是否明智?

举个例子可能会有所帮助。假设您的容器中有代表城市的文件。在其他字段中,每个文档都有一个 country、一个 region 和一个 name。您 可以 country 进行分区,以便全国范围的查询可以集中在一个分区上。但是较小的读取(例如,单个区域或少数几个城市的名称)需要查看更大的分区。这是一个很好的权衡吗?

显然,具体情况会根据更频繁地需要查询而有所不同,唯一明智的优化方法是在测量之后。但一般来说,跨分区查询的额外成本是否足以证明使用更大的分区是合理的?

如果您的所有数据都小于 50GB,那么它就不那么重要了,因为您的所有数据(在 20GB 逻辑分区内)都将位于一个物理分区上。随着集合大小的增长,跨分区查询变得越来越昂贵。查询为提供结果而必须遍历的物理分区越多,RU/s 成本就越高,延迟也就越长。