日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

MySQL 8.0新特性之原子DDL

發(fā)布時(shí)間:2025/6/17 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 8.0新特性之原子DDL 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

文章來(lái)源:愛可生云數(shù)據(jù)庫(kù)

?

簡(jiǎn)介

?

MySQL8.0 開始支持原? DDL(atomic DDL),數(shù)據(jù)字典的更新,存儲(chǔ)引擎操作,寫?進(jìn)制日志結(jié)合成了一個(gè)事務(wù)。在沒(méi)有原?DDL之前,DROP TABLE test1,test2;如遇到server crash,可能會(huì)有test1被drop了,test2沒(méi)有被drop掉。下面來(lái)看下在MySQL8.0之前和MySQL8.0 數(shù)據(jù)字典的區(qū)別。

在MySQL8.0 之前,Data Dictionary除了存在與.FRM, .TRG, .OPT ?件外,還存在于系統(tǒng)表中(MyISAM ?事務(wù)引擎表中),在MySQL8.0 ,Data Dictionary 全部存在于Data Dictionary Storage Engine(即 InnoDB表中),這使crash recovery 維持原?性成為了可能。

?

?

存儲(chǔ)引擎?持

?

?

目前,只有InnoDB存儲(chǔ)引擎?持原子DDL,為了實(shí)現(xiàn)原子DDL,Innodb要寫DDL logs 到 mysql.innodb_ddl_log 表,這是?個(gè)隱藏在mysql.ibd 數(shù)據(jù)字典表空間?的數(shù)據(jù)字典表。要看mysql.innodb_ddl_log 中的內(nèi)容,需要

查看error log

原子DDL 操作步驟

?

  • 準(zhǔn)備:創(chuàng)建所需的對(duì)象并將DDL?志寫入 mysql.innodb_ddl_log表中。DDL日志定義了如何前滾和回滾DDL操作。

  • 執(zhí)行:執(zhí)?DDL操作。例如,為CREATE TABLE操作執(zhí)?創(chuàng)建。

  • 提交:更新數(shù)據(jù)字典并提交數(shù)據(jù)字典事務(wù)。

  • Post-DDL:重播并從mysql.innodb_ddl_log表格中刪除DDL?志。為確保回滾可以安全執(zhí)??不引?不?致性,在此最后階段執(zhí)??件操作(如重命名或刪除數(shù)據(jù)文件)。這一階段還從 mysql.innodb_dynamic_metadata的數(shù)據(jù)字典表刪除的動(dòng)態(tài)元數(shù)據(jù)為了DROP TABLE,TRUNCATE和其它重建表的DDL操作。

  • ?

    ?論事務(wù)是提交還是回滾,DDL日志都會(huì)mysql.innodb_ddl_log在Post-DDL階段重播并從表中刪除 。mysql.innodb_ddl_log如果服務(wù)器在DDL操作期間暫停,DDL?志應(yīng)該只保留在表中。在這種情況下,DDL?志會(huì)在恢復(fù)后重播并刪除。

    ?

    ?

    在恢復(fù)情況下,當(dāng)服務(wù)器重新啟動(dòng)時(shí),可能會(huì)提交或回退DDL事務(wù)。如果在重做?志和?進(jìn)制日志中存在DDL操作的提交階段期間執(zhí)?的數(shù)據(jù)字典事務(wù),則該操作被認(rèn)為是成功的并且被前滾。否則,在InnoDB重放數(shù)據(jù)字典重做日志時(shí)回滾不完整的數(shù)據(jù)字典事務(wù) ,并且回滾DDL事務(wù)。

    ?

    原?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

    ?

    ?

    示例

    結(jié)論

    ?

    在MySQL8.0之前,alter table 操作在server crash的情況下,會(huì)遺留.frm,.ibd文件。MySQL8.0 能實(shí)現(xiàn)原?DDL(包括 DROP TABLE, DROP SCHEMA, CREATE TABLE, TRUNCATE TABLE, ALTER TABLE),alter table 操作,在server crash的情況下,不會(huì)遺留.frm,.ibd臨時(shí)文件。讓我們?起期待MySQL8.0 GA的到來(lái)吧!

    ?

    參考:

    https://www.youtube.com/watch?v=jM53hSU9L70

    https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html

    轉(zhuǎn)載于:https://www.cnblogs.com/DataArt/p/10095653.html

    《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的MySQL 8.0新特性之原子DDL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。