首页 > 解决方案 > Firestore 事务是否被视为串行队列?

问题描述

如果 Firestore 事务中的基础数据在事务期间(从事务外部)发生更改,则会重试该事务以确保当前数据。但是,如果该基础数据只能在事务中更改,那么对该数据的更改是否有效地序列化了?换句话说,如果一个文档只能通过一个事务来创建和编辑,那么当一个事务正在执行时,竞争事务(在同一个文档上)是否会等待?是先进先出还是同一数据上的事务可以相互中断?

标签: firebasegoogle-cloud-firestore

解决方案


事务未序列化 - 这不会以 Firestore 要求的方式扩展。从 Web 和移动客户端的角度来看,事务使用“乐观锁定”来进行更改。这种锁定方式实际上并不强制更改文档,它只是表明由于另一个更改,写入可能无法按照预期的方式完成。这就是重试事务的原因(如文档中所述) - 如果在持有乐观锁时文档发生更改,则事务将有另一个机会使用事务中涉及的所有文档的新内容进行更改。

另请参阅:Cloud Firestore 文档锁定


推荐阅读