mysql innodb_support_xa_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。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2153760/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值