inno
创新互联专业做网站、
网站设计,集网站策划、网站设计、网站制作于一体,网站seo、网站优化、网站营销、
软文发布平台等专业人才根据搜索规律编程设计,让网站在运行后,在搜索中有好的表现,专业设计制作为您带来效益的网站!让网站建设为您创造效益。db_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的作用-创新互联
URL标题:
http://cqcxhl.com/article/djdsig.html