分布式事务

当前innodb 支持分布式事务。 一个分布式事务包括多个行动, 而这些行动本身又是一个事务。 这些行动要么一起成功, 要么一起回滚。

一个分布式事务中的单个事务 又叫做 “分支事务”

分支事务作为原子操作, 要么全部提交, 要么全部回滚。

 

个人对分布式事务概念的理解:一个事务里面是sql语句集合, 而分布式事务的里面是 事务。 分布式事务是 事务的集合。 图解如下, 如果我的理解错误欢迎指正。

资源管理器(RM): 数据库服务器就是一种资源管理器。

事务管理器(TM): 协调分支事务。 TM与管理每个事务的RM进行通信。

 

 

mysql 执行 XA MYSQL (比如 xa start 'test','db1'; )的时候, 那么该服务器相当于XA事务的资源管理器。 与mysql 服务器相连的客户端相当于一个事务管理器

 

 

 

分布式事务的语法

启动一个分布式事务

XA START xid

xid 分布式事务的唯一标识符。 由客户端或者服务器生成。

xid组成: gtrid [,bqual [, formatID]]   比如 ‘test,db01’

gtrid ; 分布式事务的标识符, 相同的分布式事务用同一个gtrid

bqual : 标识分支事务。 对同一个分布式事务中的分支事务, 它们必须是唯一的。

formatID: 是一个数字, 用于表示 gtrid 和 bqual 使用的格式。 默认是 1

 

 

使得事务进入PREPARE 状态

XA END xid [SUSPEND [FOR MIGRATE]]

XA PREPARE xid

 

提交具体的分支事务

XA COMMIT xid [ONE PHASE]

回滚具体的分支事务

XA ROLLBACK xid

 

返回当前数据库中处于PREPARE 状态的分支事务的详细信息。

XA RECOVER

 

 

存在的问题

事务在prepare 状态的时候并没有写入到binlog 中。

如果分支事务达到 prepare 状态的时候, 此时数据库异常重新启动之后, 依然可以对分支事务进行提交或者回滚, 但是提交后事务是不会写到binlog 的, 此时会导致主从复制不一致了

 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值