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的作用
文章位置:https://www.cdcxhl.com/article42/johgec.html

成都网站建设公司_创新互联,为您提供搜索引擎优化Google外贸建站网站内链网站设计公司品牌网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设