MySQL-xa事务

Author Avatar
丁起男 08月 03,2022
  • 在其它设备中阅读本文章

MySQL-xa事务

MySQL从5.0.3开始支持xa分布式事务,但只有inndb存储引擎支持

语法

xa {start|begin} xid [join|resume] //开启xa事务

xa end xid [suspend [for migrate]] //xa事务操作结束,接下来进行两阶段提交

xa prepare xid //为xid全局事务做准备,如果全部成功则commit;否则rollback

xa commit xid [one phase] //提交事务

xa rollback xid //回滚事务

xa recover [convert xid] //展示所有准备阶段的事务

状态

  1. 通过xa start开始一个新的xa事务,这时事务处于激活状态(active)
  2. 对于已经激活的xa事务,输入sql语句构成事务的操作内容,然后输入xa end语句,让事务变成静止状态(idle),该状态表示xa事务的sql语句已经结束
  3. 对于静止状态的xa事务,可以使用xa prepare语句或者xa commit…on phase进行一阶段的提交
    1. xa prepare让事务进入准备状态(prepared)。此时输入xa recover,将输出事务的xid值
    2. xa commit…one phase让事务一阶段进行提交。输入xa recover是看不到的
  4. 对于准备状态的xa协议,可以使用xa commit语句提交并结束该事务,或使用xa rollback回滚并终止该事务