innodb_support_xa的作用

发布时间:2020-08-04 23:29:45 作者:chenfeng
来源:ITPUB博客 阅读:190
innodb_support_xa可以开关InnoDB的xa两段式事务提交。

如何开启?
innodb_support_xa=true,支持xa两段式事务提交。

默认为true,值为on,多线程并发执行提交事务,按照事务的先后顺序写入binlog,如果关闭则binlog记录事务的顺序可能与实际不符,造成slave不一致

mysql> show global variables like 'innodb_support_xa';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| innodb_support_xa | ON    |
+-------------------+-------+
1 row in set (0.01 sec)


内部XA
现在mysql内部一个处理流程大概是这样:
1. prepare ,然后将redo log持久化到磁盘
2. 如果前面prepare成功,那么再继续将事务日志持久化到binlog
3. 如果前面成功,那么在redo log里面写上一个commit记录


那么假如在进行着三步时有任何一步失败,crash recovery是怎么进行的呢?
此时会先从redo log将最近一个检查点开始的事务读出来,然后参考binlog里面的事务进行恢复。
如果是在1 crash,那么自然整个事务都回滚;
如果是在2 crash,那么也会整个事务回滚;


如果是在3 crash(仅仅是commit记录没写成功),那么没有关系因为2中已经记录了此次事务的binlog,所以将这个进行commit。所以总结起来就是redo log里凡是prepare成功,但commit失败的事务都会先去binlog查找判断其是否存在(通过XID进行判断,是不是经常在binlog里面看到Xid=xxxx?这就是xa事务id),如果有则将这个事务commit,否则rollback。


推荐阅读:
  1. uboot的作用
  2. key的作用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

innodb support xa

上一篇:AI如何在工业场景中落地

下一篇:检查邮箱数据库状态并生成报表脚本

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》