xa事务

这几天看到青云开源了一个分布式数据库,radon

初略看了一下,是sharding+xa事务的思路

之前对xa事务了解的不多,趁此机会看了一下mysql 5.7的xa事务(mysql 5.7的innodb 支持xa事务)


分为内部xa和外部xa

外部xa:mysql充当rm,tm由外部协调者充当

内部xa:mysql既是rm,又是tm(内部xa需要存储引擎支持表处理维度的二阶段提交,目前只有innodb做到)


分为

xa start xid

...sql 语句

xa end xid

xa prepare xid

xa commit xid/xa rollback xid


xa recover 用于查询之前prepare未commit或者rollback的xid


5.7后prepare的xid会进行持久化,机器重启后仍然存在(如果有主从,mysql会确保复制给从)

当然应用层需要把响应的xid持久化,用来做错误修复

你可能感兴趣的:(xa事务)