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。
如何開啟?
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 的作用
- js的作用域、作用域鏈JS
- js的作用域與作用域鏈JS
- js的作用域和作用域鏈JS
- Symbol 的作用Symbol
- jQuery $ 的作用jQuery
- systemd的作用
- #include的作用
- condition的作用
- static的作用
- Hashcode的作用
- ContentPresenter 的作用
- CDN的作用
- @Deprecated 的作用
- Git分支的作用Git
- Kafka——zookeeper的作用Kafka
- SSH Agent 的作用
- noEmit 的作用是?MIT
- JS的作用域JS
- http 代理的作用HTTP
- ARM的BUS Matrix的作用
- Token 的作用和原理
- Symbol 的作用[翻譯]Symbol
- Spring框架的基本作用Spring框架
- 利用Virtual Dom的作用
- C++中::的作用C++
- Tomcat中redirectPort的作用Tomcat
- MYSQL意向鎖的作用MySql
- MASM中Group的作用ASM
- linux 命令尾部&的作用Linux
- Vue中key的作用Vue
- @ResponseBody註解的作用
- 解引符 *的作用
- 包裝類的作用
- 負載箱的作用?負載
- swiftUI-@State 的作用SwiftUI
- swiftUI-@Environment的作用SwiftUI
- maven中Scope的作用Maven