在Microsoft的documents regarding CosmosDB中,有人说当您进行批量保存或提交时,存储过程和UDF编程很好,但它没有说明批量大小/记录计数。
批处理 - 开发人员可以对插件等操作进行分组并批量提交。创建单独事务的网络流量延迟成本和存储开销显着降低。
有限制吗?什么是最佳做法?
例如,假设我有一百万条记录,我想保存,每条记录为2-4KB。我认为用3 GB的数据调用SP并不是一个好主意。 :)
我应该在1次通话中使用1000行(~3MB)还是仍然太大/小?
* PS :由于承诺在不到15毫秒内完成写入操作,我认为1000条记录应该少于15秒,5000条记录少于75秒仍然有效。
答案 0 :(得分:0)
我会说,您应该尝试提出正确的批量大小。
但是,请记住sprocs只能运行5秒钟。有关如何从代码处理此问题,请参阅https://docs.microsoft.com/en-us/azure/cosmos-db/programming#bounded-execution。
希望得到这个帮助。
答案 1 :(得分:0)
在进行批处理时,您需要考虑一些事项。
使用存储过程执行Batch upsert时,它只能在单个分区上运行。
如果您的每条记录都是4 KB,那么对于单次写入,写入操作将消耗大约4次6 RU /秒= 24 RU /秒。 单个物理分区最多只能有10K RU,这意味着您最多可以插入416个文档/秒。 这假设没有额外的索引成本,并且没有其他写入发生在相同的物理分区。
批处理肯定可以节省您的网络跃点。 但是在使用批处理时应该考虑以下内容: