MySQL 8.0新特性之原子DDL
?
文章來源:愛可生云數據庫
?
簡介
?
MySQL8.0 開始支持原? DDL(atomic DDL),數據字典的更新,存儲引擎操作,寫?進制日志結合成了一個事務。在沒有原?DDL之前,DROP TABLE test1,test2;如遇到server crash,可能會有test1被drop了,test2沒有被drop掉。下面來看下在MySQL8.0之前和MySQL8.0 數據字典的區別。
在MySQL8.0 之前,Data Dictionary除了存在與.FRM, .TRG, .OPT ?件外,還存在于系統表中(MyISAM ?事務引擎表中),在MySQL8.0 ,Data Dictionary 全部存在于Data Dictionary Storage Engine(即 InnoDB表中),這使crash recovery 維持原?性成為了可能。?
?
存儲引擎?持
?
?
目前,只有InnoDB存儲引擎?持原子DDL,為了實現原子DDL,Innodb要寫DDL logs 到 mysql.innodb_ddl_log 表,這是?個隱藏在mysql.ibd 數據字典表空間?的數據字典表。要看mysql.innodb_ddl_log 中的內容,需要查看error log
原子DDL 操作步驟
?
準備:創建所需的對象并將DDL?志寫入 mysql.innodb_ddl_log表中。DDL日志定義了如何前滾和回滾DDL操作。
執行:執?DDL操作。例如,為CREATE TABLE操作執?創建。
提交:更新數據字典并提交數據字典事務。
Post-DDL:重播并從mysql.innodb_ddl_log表格中刪除DDL?志。為確保回滾可以安全執??不引?不?致性,在此最后階段執??件操作(如重命名或刪除數據文件)。這一階段還從 mysql.innodb_dynamic_metadata的數據字典表刪除的動態元數據為了DROP TABLE,TRUNCATE和其它重建表的DDL操作。
?
?論事務是提交還是回滾,DDL日志都會mysql.innodb_ddl_log在Post-DDL階段重播并從表中刪除 。mysql.innodb_ddl_log如果服務器在DDL操作期間暫停,DDL?志應該只保留在表中。在這種情況下,DDL?志會在恢復后重播并刪除。
?
?
在恢復情況下,當服務器重新啟動時,可能會提交或回退DDL事務。如果在重做?志和?進制日志中存在DDL操作的提交階段期間執?的數據字典事務,則該操作被認為是成功的并且被前滾。否則,在InnoDB重放數據字典重做日志時回滾不完整的數據字典事務 ,并且回滾DDL事務。?
原?DDL ?持類型
?
? DROP TABLES , all tables dropped or none
? DROP SCHEMA, all entities in the schema are dropped, or none
? Note that atomic DDL statements will be rolled back or committed even in case of crash, e.g. RENAME TABLES
? CREATE TABLE would be successfully committed or rolled back (no orphan ibd left)
? TRUNCATE TABLE (including InnoDB tables with FTS AUX tables) would be successfully committed or rolled back
? RENAME TABLES, all or none
? ALTER TABLE successful or not done
?
?
示例
結論
?
在MySQL8.0之前,alter table 操作在server crash的情況下,會遺留.frm,.ibd文件。MySQL8.0 能實現原?DDL(包括 DROP TABLE, DROP SCHEMA, CREATE TABLE, TRUNCATE TABLE, ALTER TABLE),alter table 操作,在server crash的情況下,不會遺留.frm,.ibd臨時文件。讓我們?起期待MySQL8.0 GA的到來吧!
?
參考:
https://www.youtube.com/watch?v=jM53hSU9L70
https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html
轉載于:https://www.cnblogs.com/DataArt/p/10095653.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的MySQL 8.0新特性之原子DDL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: luogu P1393 P3157 动
- 下一篇: Git冲突与解决方法【转】