MySQL xa 事务局限性
来源:互联网 发布:上海家博会数据 编辑:程序博客网 时间:2024/05/20 15:10
最近因为要使用MySQL的xa事务来实现分布式事务所以研究了下,发现MySQL的xa事务真心很弱。。。
关于XA 事务的介绍可以参考我之前的博客:
http://blog.sina.com.cn/s/blog_4673e6030101c7o4.html
主要的局限性为以下3点:
1.不支持savepoint,所以当一条语句操作分区表的多个分片并出现部分成功部分失败时,分布式事务无法回滚到这条语句执行之前的状态。
2. 如果客户端和MySQL之前的连接断开(不管任何原因)或者MySQL正常关闭了,即便这个MySQL实例的分布式状态已经是xaprepare了,它也照样被回滚。
也就是说:
a.如果连接断开或MySQL正常关闭,那么XA的调度程序将永远无法commit这个事务了。
b.如果xacommit时连接断开或MySQL正常关闭,那么你将无从得知事务是真的被提交了还是被回滚了。
3. 如果分布式事务达到prepare状态,这时MySQL异常关闭了,那么在MySQL恢复之后,XA调度程序还可以继续xacommit这个事务,但这个xa commit的事务是不会记录binlog的。
也就说会主从数据不一致。
总的感觉就是MySQL这个xa支持实在太弱了,用XA不就是为了出现突发状况的时候保证数据的一致性吗?
有这些个限制,只要出现突发状况,基本上肯定数据不一致,真的很鸡肋啊!
转载请注明转自高孝鑫的blog
关于XA 事务的介绍可以参考我之前的博客:
http://blog.sina.com.cn/s/blog_4673e6030101c7o4.html
主要的局限性为以下3点:
1.
2. 如果客户端和MySQL之前的连接断开(不管任何原因)或者MySQL正常关闭了,即便这个MySQL实例的分布式状态已经是xaprepare了,它也照样被回滚。
3. 如果分布式事务达到prepare状态,这时MySQL异常关闭了,那么在MySQL恢复之后,XA调度程序还可以继续xacommit这个事务,但这个xa commit的事务是不会记录binlog的。
总的感觉就是MySQL这个xa支持实在太弱了,用XA不就是为了出现突发状况的时候保证数据的一致性吗?
有这些个限制,只要出现突发状况,基本上肯定数据不一致,真的很鸡肋啊!
转载请注明转自高孝鑫的blog
0 0
- MySQL xa 事务局限性
- MySQL XA 事务支持调研
- mysql 存储引擎 和 事务
- MySQL 的 XA 模式下的主从复制问题
- 17 mysql XA事务
- MySQL分布式XA事务
- MySQL中的XA事务
- MySQL分布式XA事务
- MySQL分布式XA事务
- XA事务与MySQL
- MySQL XA事务
- mysql 分布式事务(xa)
- MySQL分布式(XA)事务
- 详解Mysql分布式事务XA
- SSD7 exercise 8 事务
- mysql 注释
- cmd mysql 常用命令
- 刘道成 mysql 视频教程 配套材料
- Centos配置安装光盘为yum源
- 编译选项的全局控制和局部控制
- Linux系统 阻塞socket遇到网络故障
- TCP Nagle's 算法导致的性能问题
- MySQL 5.6 GTID复制 乱序复制
- MySQL xa 事务局限性
- MySQL最大连接数限制分析
- OpenLDAP,Windows,MySQL之初搭建
- 转载: mysql在linux中的通用…
- RandomQueryGenerator 介绍
- expect 使用笔记
- Infinidb 使用笔记1
- glusterfs 快速安装配置
- 网络丢包问题处理