BigQuery 中的事务隔离级别是什么

5 google-bigquery

任何人都可以帮助解释谷歌云 BigQuery 中的事务隔离级别是什么?似乎没有关于此的任何文件。我们知道在其他数据库中,例如sql server数据库,有事务隔离级别:未提交读、已提交读、可重复读、快照、可序列化。

谢谢。

rme*_*ves 5

关于它的信息并不多,但在本迁移指南中,我们可以找到BigQuery和之间的一些比较,Teradata这可以为我们提供线索。

正如指南中所说,BigQuery使用乐观并发控制,它不使用锁操作,假设多个事务可以频繁完成而不会相互干扰。当多个 DML 事务同时在同一个表中执行时,BigQuery使用使用锁操作的悲观并发控制。为确保隔离BigQuery使用快照隔离方法。

BigQuery 通过快照隔离帮助确保乐观并发控制(首先提交获胜),其中查询在查询开始之前读取最后提交的数据。这种方法可以保证同一 DML 语句中的每行、排列和跨行具有相同级别的一致性,同时避免死锁。在针对同一个表进行多个 DML 更新的情况下,BigQuery 会切换到悲观并发控制。加载作业可以完全独立运行并附加到表中。但是,BigQuery 尚未提供明确的事务边界或会话。

它在指南中还说

由于 BigQuery 中还没有明确的事务边界,因此 BigQuery 中也没有明确回滚的概念。解决方法是表装饰器或使用FOR SYSTEM_TIME AS OF

既然我们可以假设,BigQuery有其特定的实现optimistic concurrency controlpessimistic concurrency control这使得我们很难获得更多的深层次信息。

我希望它有帮助