SQL Life

Oceanbase分布式事务技术

时间:2021/6/15 18:48:58  作者:solgle  来源:solgle.com  查看:823  评论:1
内容摘要:OceanBase如何保证事务ACID原子性Atomicity      依赖两阶段提交协议保证分布式事务的原子性;一致性Consistency    保证主键唯一等一致性约束;全局快照 - 单租户GTS服务,1秒钟内能够响应获取全局时间戳的调用次数超过200万次;隔离性Isol...
一:OceanBase如何保证事务ACID
 
原子性Atomicity      依赖两阶段提交协议保证分布式事务的原子性;
一致性Consistency    保证主键唯一等一致性约束;全局快照 - 单租户GTS服务,1秒钟内能够响应获取全局时间戳的调用次数超过200万次;
隔离性Isolation      采用MVCC进行并发控制,实现read-committed的隔离级别;所有修改的行加互斥锁,实现写 - 写互斥;读操作读取特定快照版本的数据,读写互不阻塞;
持久性Durability     Redo-Log使用Paxos协议做多副本同步
 
二:两阶段协议
2PC是一个非常经典的强一致、中心化的原子提交协议。中心化指的是协调者(Coordinator),强一致性指的是需要所有参与者(partcipant)均要执行成功才算成功,否则回滚。
 
1. 第一阶段:(尝试执行和反馈
协调者(coordinator)发起提议通知所有的参与者(partcipant),参与者收到提议后,本地尝试执行事务,但并不commit,之后给协调者反馈,反馈可以是yes或者no。
2. 第二阶段:(收到反馈后判断是否提交或回滚
协调者收到参与者的反馈后,决定commit或者rollback,参与者全部同意则commit,如果有一个参与者不同意则rollback。
 
三:OceanBase两阶段提交协议的特点
1. 协调者不写日志,变成了一个无持久化状态的状态机
2. 事务的状态由参与者的持久化状态决定
3. 所有参与者都prepare成功即认为事务进入提交状态,立即返回客户端commit
4. 每个参与者都需要持久化参与者列表,方便异常恢复时构建协调者状态机,推进事务状态
5. 参与者增加clear阶段,标记事务状态机是否终止
 
 
四:分布式事务底层优化
1. 单分区事务:不走2PC ,直接写一条日志即可完成事务提交
2. 单机多分区事务→ 优化的两阶段提交
3. 多机多分区事务→完整的两阶段提交 →prepare, commit/abort
 
 
五:分布式事务调优方法
1. 业务数据模型设计原则:尽量避免跨机分布式事务
2. 单sql语句不建议跨机器通过table group、primary_zone把相关的表的leader放在同一个机器上
3. 慎重选择事务中的第一条语句,因为Obproxy的路由规则
 
 
 
标签:Oceanbase 分布式事务 
相关评论
 img1 img2 img3 img4 img5 img6 img7 img8 img9 img10
评论者:      验证码:  点击获取验证码
   Copyright © 2013-2028 solgle.com,All rights reserved.[solgle.com] 公安机关备案号:51010802000219
Email:solgle@solgle.com; weixin:cd1008610000 ICP:蜀ICP备14011070号-1