任何人都可以帮助解释谷歌云 BigQuery 中的事务隔离级别是什么?似乎没有关于此的任何文件。我们知道在其他数据库中,例如sql server数据库,有事务隔离级别:未提交读、已提交读、可重复读、快照、可序列化。
谢谢。
关于它的信息并不多,但在本迁移指南中,我们可以找到BigQuery和之间的一些比较,Teradata这可以为我们提供线索。
正如指南中所说,BigQuery使用乐观并发控制,它不使用锁操作,假设多个事务可以频繁完成而不会相互干扰。当多个 DML 事务同时在同一个表中执行时,BigQuery使用使用锁操作的悲观并发控制。为确保隔离,BigQuery使用快照隔离方法。
BigQuery 通过快照隔离帮助确保乐观并发控制(首先提交获胜),其中查询在查询开始之前读取最后提交的数据。这种方法可以保证同一 DML 语句中的每行、排列和跨行具有相同级别的一致性,同时避免死锁。在针对同一个表进行多个 DML 更新的情况下,BigQuery 会切换到悲观并发控制。加载作业可以完全独立运行并附加到表中。但是,BigQuery 尚未提供明确的事务边界或会话。
它在指南中还说
由于 BigQuery 中还没有明确的事务边界,因此 BigQuery 中也没有明确回滚的概念。解决方法是表装饰器或使用FOR SYSTEM_TIME AS OF。
既然我们可以假设,BigQuery有其特定的实现optimistic concurrency control和pessimistic concurrency control这使得我们很难获得更多的深层次信息。
我希望它有帮助
| 归档时间: |
|
| 查看次数: |
1327 次 |
| 最近记录: |