OBCP第五章 分布式事务高级技术-分布式两阶段提交

传统数据库的实现原理

“快照隔离级别(Snapshot Isolation)”和“多版本并发控制(Multi-VersionConcurrency Control,简称MVCC)”两种技术的大致含义是:为数据库中的数据维护多个版本号(即多个快照),当数据被修改的时候,可以利用不同的版本号区分出正在被修改的内容和修改之前的内容,以此实现对同一份数据的多个版本做并发访问,避免了经典实现中“锁”机制引发的读写冲突问题。

 快照隔离级别(snapshot isolation)

 

OceanBase的隔离级别

OceanBase支持的隔离级别

MySQL Mode

读已提交(默认)

可重复读

Oracle Mode

读已提交(默认)   

可串行化

隔离级别设置

事务级别

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

会话级别

ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLE;

分布式数据库面临的挑战

和传统的数据库的单点全共享(即Shared-Everything)架构不同,OceanBase是一个原生的分布式架构,采用了多点无共享(即Shared-Nothing)的架构,在实现全局(跨机器)一致的快照隔离级别和多版本并发控制时会面临分布式

架构所带来的技术挑战

业界常用解决方案

分布式数据库应如何在全局(跨机器)范围内保证外部一致性,进而实现全局一致的快照隔离级别和多版本并发控制呢?大体来说,业界有两种实现方式:

利用特殊的硬件设备,如GPS和原子钟(Atomic Clock),使多台机器间的系统时钟保持高度一致,误差小到应用完全无法感知的程度。

版本号不再依赖各个机器自己的本地系统时钟,所有的数据库事务通过集中式的服务获取全局一致的版本号,由这个服务来保证版本号的单调向前。

OceanBase全局一致性快照技术          

OceanBase数据库是利用一个集中式服务来提供全局一致的版本号

事务在修改数据或者查询数据的时候,无论请求源自哪台物理机器,都会从这个集中式的服务处获取版本号,OceanBase则保证所有的版本号单调向前并且和真实世界的时间顺序保持一致

GTS服务高可用

GTS是集群的核心,根据租户的级别不同采用不同的方式实现高可用

用户租户

OceanBase数据库使用租户级别内部表 __all_dummy的 leader 作为 GTS 服务提供者,时间来源于该leader的本地时钟。GTS 默认是三副本的,其高可用能力跟普通表的能力一样。

系统租户

使用 __all_core_table的leader作为GTS服务的提供者,高可用能力与普通表一样。时间戳正确性保证。

ob_timestamp_service :用于指定使用何种时间戳服务

GTS(默认)、LTS、HA_GTS

OceanBase全局一致性快照如何处理异常

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯西极限存在准则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值