两阶段提交 & Oracle事务隔离级别

本文探讨了GaussDB和OceanBase在采用两阶段提交协议上的共性,以及可能存在的实现差异,同时提及了Oracle和MySQL的事务隔离级别。要了解详细技术差异,需参考官方资料或直接咨询相关供应商。

GaussDB 和 OceanBase 两阶段提交的异同

引子:Postgres 2PC
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

两阶段提交

两阶段提交 (2PC) 是一种用于处理分布式系统中的事务问题的协议。GaussDB 和 OceanBase 都采用了这个协议,但在实现细节和优化方面可能存在一些差异。

相似之处
  1. 两阶段提交:两者都使用了两阶段提交协议。第一阶段是准备阶段,协调者询问所有参与者是否可以提交事务;第二阶段是提交阶段,如果所有参与者都答复可以提交,则协调者会通知所有参与者提交事务,否则就进行回滚。

  2. 原子性:通过两阶段提交协议,两者都能确保分布式事务的原子性,即事务要么全部成功,要么全部失败。

  3. 持久性:两者都通过日志或其他方式实现了数据的持久性,即使在系统崩溃后也能恢复到正确的状态。

差异之处

目前公开的信息不足以详细比较 GaussDB 和 OceanBase 在两阶段提交方面的具体实现差异。这可能涉及到他们在网络通信、错误处理、性能优化等方面的具体设计决策。为了获得更深入的理解,可能需要查看每个系统的源代码或者联系供应商进行咨询。

注意:以上信息是基于目前公开可用的资源。对于更深入的技术差异,可能需要直接与 Huawei(GaussDB)和阿里巴巴(OceanBase)取得联系以获取更详细的信息。

Oracle 数据库支持以下四种事务隔离级别:

MySQL 4种事务隔离级别 & 3种异常现象 & 死锁

  1. 只读 (Read Only): 这个级别保证了在事务开始之后,不会看到其他事务所做的修改。所有的查询都是对一个一致性的快照进行的,这个快照是在事务开始时建立的。

  2. 读已提交 (Read Committed): 这是 Oracle 的默认隔离级别。它保证了当某个事务访问数据时,它只能看到已经提交的事务所做的改变。即,一个事务从开始到结束,看到的是在此期间已经提交的其它事务的更改,但无法看到未提交的更改。

  3. 串行化 (Serializable): 这个级别为每个事务提供了完全的隔离。也就是说,事务执行的结果与按顺序(一个接一个)执行事务的结果相同。

  4. 可重复读 (Repeatable Read): 可重复读并不被 Oracle 直接支持,因为在 Oracle 中,并没有等效于 MySQL 的 Repeatable Read 隔离级别,它的 Serializable 隔离级别提供了比 Repeatable Read 更高的隔离级别。

注意:以上隔离级别的设定会影响并发事务可能遇到的问题,如脏读、不可重复读、幻读等。不同级别有不同的性能和并发效果,需要根据实际应用场景进行选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值