首页 > 解决方案 > 对 Cloud Firestore 的多次写入是否有任何限制?

问题描述

我多次制作新文档而不检查写入是否成功:

for element in data {
   val document = firestore.collection("test")
   document.set(element)
}

有时data包含数百个元素,我发现在极少数情况下并非每个文档都上传到云端(例如,5% 没有成功上传,但只有最后一个元素)。

多次写入有限制吗?我应该把它包进批次吗?

标签: androidfirebasekotlingoogle-cloud-firestore

解决方案


是的,大量写入的 Firestore 性能存在限制。

  • 单个文档每秒更新一次的限制。在这种情况下,一次编写所有文档肯定比一次编写一个值更好(另外,它的成本会低得多)。文档指出,这个限制有点软,但强烈建议不要超过它。

  • 如果您在狭窄的文档范围(或使用新集合)中编写,您也可能会遇到性能问题。确保您要么使用自动 ID,要么将它们分散在范围内。

最后,写入有一些完全的限制,包括每秒 500 次写入到文档包含索引字段上的顺序值的集合的速率。

基于另一个最近的问题,批处理充其量是对并行写入的一种清洗,并且确实增加了复杂性,但它比顺序写入更快。该答案还建议不要使用客户端 SDK 进行批量写入(例如,使用 Admin SDK)。


推荐阅读