innodb_support_xa的作用

innodb_support_xa可以開關InnoDB的xa兩段式事務提交。

如何開啟?
innodb_support_xa=true,支持xa兩段式事務提交。

默認為true,值為on,多線程并發(fā)執(zhí)行提交事務,按照事務的先后順序寫入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
現(xiàn)在mysql內部一個處理流程大概是這樣:
1. prepare ,然后將redo log持久化到磁盤
2. 如果前面prepare成功,那么再繼續(xù)將事務日志持久化到binlog
3. 如果前面成功,那么在redo log里面寫上一個commit記錄


那么假如在進行著三步時有任何一步失敗,crash recovery是怎么進行的呢?
此時會先從redo log將最近一個檢查點開始的事務讀出來,然后參考binlog里面的事務進行恢復。
如果是在1 crash,那么自然整個事務都回滾;
如果是在2 crash,那么也會整個事務回滾;


如果是在3 crash(僅僅是commit記錄沒寫成功),那么沒有關系因為2中已經(jīng)記錄了此次事務的binlog,所以將這個進行commit。所以總結起來就是redo log里凡是prepare成功,但commit失敗的事務都會先去binlog查找判斷其是否存在(通過XID進行判斷,是不是經(jīng)常在binlog里面看到Xid=xxxx?這就是xa事務id),如果有則將這個事務commit,否則rollback。


名稱欄目:innodb_support_xa的作用
文章位置:http://muchs.cn/article42/johgec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、Google、外貿建站網(wǎng)站內鏈、網(wǎng)站設計公司、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設