我正在尝试将 100 - 300Kb 之间的大约 850 个文档重复插入到 cosmos 集合中。我将它们全部放在同一个分区键中。
估算器建议在 50K RU 时应在短时间内处理此问题,但在远超过 100k 时,每组平均需要 20 分钟左右,而不是更合理的。
我应该为每个文档设置唯一的分区键吗?问题是让所有文档都转到同一个分区键,它们是按顺序处理的,而且容量不是负载均衡吗?使用批量执行器会解决这个问题吗?
我正在尝试将 100 - 300Kb 之间的大约 850 个文档重复插入到 cosmos 集合中。我将它们全部放在同一个分区键中。
估算器建议在 50K RU 时应在短时间内处理此问题,但在远超过 100k 时,每组平均需要 20 分钟左右,而不是更合理的。
我应该为每个文档设置唯一的分区键吗?问题是让所有文档都转到同一个分区键,它们是按顺序处理的,而且容量不是负载均衡吗?使用批量执行器会解决这个问题吗?
我应该为每个文档设置唯一的分区键吗?问题是让所有文档都转到同一个分区键,它们是按顺序处理的,而且容量不是负载均衡吗?
您可以从此文档中找到以下声明。
要充分利用为一个容器或一组容器配置的吞吐量,您必须选择一个分区键,该分区键允许您在所有不同的分区键值之间均匀分布请求。
所以,我认为定义分区键对于插入或查询都有好处。但是,分区键的选择真的值得一试。请参考这个文档来选择你的分区键。
使用批量执行器会解决这个问题吗?
是的,您可以在批量插入中使用延续令牌。更多详细信息,请参阅我之前的案例:如何在 Azure Cosmos DB 上获取批量插入的延续令牌?.
希望它可以帮助你。
总结一下,我们需要评估集合的默认索引。它可能需要比实际写入文件多 100 到 1000 倍的 RU。