innodb_support_xa的作用

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。



网页题目:innodb_support_xa的作用
本文来源:http://bzwzjz.com/article/johgec.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: H5网站制作 成都网站建设 网站设计 定制网站设计 网站制作 网站建设改版 企业网站制作 营销型网站建设 四川成都网站制作 网站建设 成都网站制作 成都网站设计制作公司 网站建设方案 成都网站设计公司 成都网站建设 外贸营销网站建设 古蔺网站建设 成都网站设计 成都网站建设 成都网站制作 高端网站设计 成都网站设计