Firestore每秒更新数据的限制是什么?为什么我似乎可以超过这个限制?

12

Firestore 文档配额图表显示每秒只能更新一次文档。为什么我似乎可以在一秒内多次更新一个文档而没有问题?

我尝试了一个简单的“for loop”循环,所有写入似乎都成功了:

 const db = firebase.firestore(firebase.app("prjID"));
 for (i = 0; i < 10; i++) {
     console.log(`updating /test/test with test:${i} ${new Date().getMilliseconds()}`);
     db.doc(`/test/test`).update({ test: i });
 }

日志显示: enter image description here

我想知道当在一秒钟内尝试多个写操作时(即超出看似可以忽略的限制)服务器会返回什么响应?如果我遗漏了什么或者这个限制意味着不同的事情,能否有任何解释?

3个回答

13

如果有人想了解此事,FYI一下,这不是Firebase强制执行的硬性限制,而是系统能力的指示。从Firebase 这里得到的答案可以更深入地了解情况。因此,如果您认为自己要在短时间内对文档进行数千次写入,则应考虑其影响。但是对于偶尔进行一些写入操作,系统似乎能够及时处理。


4
如果达到了限制,操作会失败还是等待? - Sanka Darshana
1
正如我之前解释的那样,这并没有一个硬性限制,所以这只是一个机会,取决于系统是否能够处理您的工作。对于我的情况,我每秒最多不超过10或15次更新,看起来这个速率已经足够了。 - TheBen
1
@TheeBen 那么如果它失败了会发生什么?数据丢失吗? - Oliver Dixon
我无法提供明确的答案,你最好向Firebase的专业人员咨询。但根据我的经验,在真实应用中,除非你的应用程序太大,否则你永远不会达到必须处理此限制的程度。在这种情况下,我怀疑你是否仍在使用Firebase,或者到那时他们已经超越了预期,或者...你懂的... - TheBen
1
@OliverDixon 静默失败。它不会写入,但也不会抛出错误。这并不是最优的。如果您正在尝试进行聚合,则很快就会到达此处。例如,如果您正在使用云函数来处理运行计数。 - Will Lovett
当您过快地向文档写入时,您会开始收到“ABORTED”错误,如此故障排除指南所述。您开始看到这些错误的点取决于您的工作量 - Juan Lara

0

-5

每秒写入的限制为2,500次。这些写入的总限制为2.5MB。

每个数据库每秒最大写入次数(在测试版中)为2,500次(每秒高达2.5 MiB)

如果您的互联网连接足够快,可以尝试运行该循环2500次,以查看是否会出现错误。


谢谢回复,但我问的是每秒写入一个文档,该文档也在同一图表中。谢谢。 - TheBen
@TheeBen明白了。对我误解感到抱歉。我尝试写了一个循环250次,发现每隔大约10秒就会暂停一下。不确定这只是我的问题还是其他人也有相同的情况。我猜测由于该产品仍处于测试阶段,Firebase的某个人正在进行一些更改,并且弄乱了配额。你可以给Firebase支持团队发送消息,让他们来处理此问题。(除了找出问题所在,不确定为什么您想要这么做)。我已经检查了状态页面,Firestore没有任何问题。 - user8207330
没问题,我怀疑 Firebase 的某些东西出了问题,但是试一下也无妨。 - TheBen
所以我问了,这是回答。https://github.com/firebase/firebase-js-sdk/issues/495#event-1463399312 - TheBen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接