MySQL Online DDL的實現細節介紹
MySQL Online DDL的實現細節共分為三個階段:
Prepare階段
1.建立臨時frm檔案
2.持有EXCLUSIVE-MDL鎖,禁止讀寫
3.根據ALTER型別,確定執行方式(copy,online-rebuild,online-norebuild)
4.更新資料字典的記憶體物件
5.分配row_log物件記錄增量
6.生成臨時ibd檔案
ddl執行階段
1.降級EXCLUSIVE-MDL鎖,允許讀寫
2.掃描原表的聚簇索引每條記錄
3.遍歷新表的聚簇索引和二級索引,逐一處理
4.根據記錄構造對應的索引項
5.將構造索引項插入sort_buffer塊
6.將sort_buffer塊插入新的索引
7.處理ddl執行過程中產生的增量(僅rebuild型別需要)
commit階段
1.升級到EXCLUSIVE-MDL鎖,禁止讀寫
2.應用最後row_log中產的日誌
3.更新innodb的資料字典表
4.提交事務(刷事務的redo日誌)
5.修改統計資訊
6.rename臨時idb檔案,frm檔案
7.變更完成
Prepare階段
1.建立臨時frm檔案
2.持有EXCLUSIVE-MDL鎖,禁止讀寫
3.根據ALTER型別,確定執行方式(copy,online-rebuild,online-norebuild)
4.更新資料字典的記憶體物件
5.分配row_log物件記錄增量
6.生成臨時ibd檔案
ddl執行階段
1.降級EXCLUSIVE-MDL鎖,允許讀寫
2.掃描原表的聚簇索引每條記錄
3.遍歷新表的聚簇索引和二級索引,逐一處理
4.根據記錄構造對應的索引項
5.將構造索引項插入sort_buffer塊
6.將sort_buffer塊插入新的索引
7.處理ddl執行過程中產生的增量(僅rebuild型別需要)
commit階段
1.升級到EXCLUSIVE-MDL鎖,禁止讀寫
2.應用最後row_log中產的日誌
3.更新innodb的資料字典表
4.提交事務(刷事務的redo日誌)
5.修改統計資訊
6.rename臨時idb檔案,frm檔案
7.變更完成
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2137420/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL DDL執行方式-Online DDL介紹MySql
- MySQL Online DDL詳解MySql
- mysql之 openark-kit online ddlMySql
- MySQL & MariaDB Online DDL 參考指南MySql
- MySQL 8.0 Reference Manual(讀書筆記81節-- InnoDB and Online DDL (1))MySql筆記
- MySQL 8.0 Reference Manual(讀書筆記82節-- InnoDB and Online DDL (2))MySql筆記
- MySQL 8.0 Reference Manual(讀書筆記83節-- InnoDB and Online DDL (3))MySql筆記
- MySQL 8.0 Reference Manual(讀書筆記84節-- InnoDB and Online DDL (4))MySql筆記
- 雲原生平臺 Kyma 上建立的 Lambda Function 的技術實現細節介紹Function
- 網站實現HTTPS的詳細流程介紹網站HTTP
- MySQL 執行 Online DDL 操作報錯空間不足?MySql
- MySQL Online DDL導致全域性鎖表案例分析MySql
- 一個 MySQL 線上 DDL 工具 — pt-online-schema-changeMySql
- MySQL在其版本迭代後Online DDL功能發生了哪些變化?MySql
- Linux SOCKET介紹 www.weiboke.onlineLinux
- SAP 電商雲 Spartacus UI SiteContextUrlParams 的實現明細介紹UIContext
- UI5 Source code map機制的細節介紹UI
- 如何恢復Mysql資料庫的詳細介紹MySql資料庫
- 記錄一次 Online DDL 操作
- OutputStreamWriter介紹&程式碼實現和InputStreamReader介紹&程式碼實現
- flutter接入現有的app詳細介紹FlutterAPP
- mysql模糊查詢like與REGEXP的使用詳細介紹MySql
- pt-online-schema-change工作過程介紹
- 理解索引:MySQL執行計劃詳細介紹索引MySql
- Linux下安裝與使用MySQL詳細介紹LinuxMySql
- 理解virtual dom的實現細節-snabbdom
- SAP 電商雲 Spartacus UI Event Service 實現明細介紹UI
- MySql介紹MySql
- 使用Covermap實現地形細節
- LSM樹的不同實現介紹
- 註解的詳細介紹
- Http Module 的詳細介紹HTTP
- MySQL之儲存函式詳細介紹艹籟MySql儲存函式
- Cordova外掛中JavaScript程式碼與Java的互動細節介紹JavaScript
- Kafka詳細介紹Kafka
- javascript this詳細介紹JavaScript
- ApplicationContext 詳細介紹APPContext
- JDBC 詳細介紹JDBC
- Ifconfig詳細介紹