• ADADADADAD

    innodb_support_xa的作用[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:12:13

    作者:文/会员上传

    简介:

    innodb_support_xa可以开关InnoDB的xa两段式事务提交。

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

    默认为true,值为on,多线程并发执行提交事务,按照事务的先

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    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的作用.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: innodbsupportxa