一、要点
- XA型事务
- TCC和AT
二、具体内容
2.1 XA型事务
mysql > xa start 'transaction1' // start a xa transtaion
mysql > ... // do business sql
mysql > xa end 'transaction1' // tell TM my business has been prepared.
mysql > xa prepared 'transaction1'
mysql > xa commit 'transaction1' // XA型事务没办法自动提交
其他命令
xa recover // list all xa transactions
xa rollback 'transaction1'// rollback transaction
注意事项:
- mysql 一个Connection,启动XA事务后,就没办法使用其他非XA的事务了,同样,启动了其他事务后,也就没办法使用XA事务了
- mysql 5.6历史的版本,针对xa型事务存在bug,当xa的connection连接被管理后,再使用xa recover查询不到之前的xa事务,connection在断开连接后,TM会自动rollback
2.2 TCC和AT
2.2.1 TCC
TCC: Try Comfirm Cancel的首字母缩写
主要依靠业务代码进行分阶段提交。
TCC的几种异常情况处理
- TRY的时候部分失败了,处理方式:rollback
注意事项
- 允许空回滚
- 防悬挂
- 幂等
缺点:
2.2.2 AT
同TCC类似,但是是自动生成反向SQL
网友评论