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)