XA和MyCat分布式事务问题

1.XA的两阶段提交

第一阶段:
XA和MyCat分布式事务问题_第1张图片
第二阶段:
XA和MyCat分布式事务问题_第2张图片
2.特点

  • 保证数据的强一致性
  • commit阶段出现问题,事务出现不一致,需人工处理
  • 效率低下,性能与本地事务相差10倍
  • Mysql5.7及以上均支持XA协议
  • Mysql Connector/J 5.0以上支持XA协议
  • Java系统中,数据源采用Atomikos

2.mycat分布式事务

1.将mycat的配置文件server.xml修改:
分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志

 <property name="handleDistributedTransactions">0</property>

2.navicat中测试一下:
将其中一个数据库中的user表的字段长度改为1.

set autocommit=0;
set xa=on;
insert into user(id,username) values(1,'奇数111'),(2,'偶数222');
commint;

结果:

set autocommit=0
OK
时间: 0s
set xa=on
OK
时间: 0s
insert into user(id,username) values(1,‘奇数111’),(2,‘偶数222’)
1105 - Data too long for column ‘username’ at row 1
时间: 0.004s

你可能感兴趣的:(mycat)