精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺談DDL技術解密

開發 開發工具 MySQL
如果對一個存儲了上百萬甚至上千上萬的數據表進行 DDL 操作,數據庫是怎么做到的呢?會不會有一個很大的事務鎖?會不會影響數據的插入和更新?今天就會聊聊這個問題,以及 PT-OSC、GH-OST 等技術,是如何高效的解決這個問題的。

首先,用過數據庫的小伙伴們(本文以 MySQL InnoDB 為例)都知道,MySQL 不止有增刪改數據操作(DML),還有改表結構的操作(DDL),當新增加字段等修改表結構時,就需要進行 DDL 操作。可是,如果對一個存儲了上百萬甚至上千上萬的數據表進行 DDL 操作,數據庫是怎么做到的呢?會不會有一個很大的事務鎖?會不會影響數據的插入和更新?今天就會聊聊這個問題,以及 PT-OSC、GH-OST 等技術,是如何高效的解決這個問題的。

Before MySQL 5.5

在 MySQL 5.5 版本及之前版本,DDL 操作主要有 copy table 和 inplace 兩種方式。

1. Copy Table 方式

Copy Table 顧名思義,就是通過臨時表拷貝的方式實現的。在 MySQL 5.5 版本及之前版本,修改表結構是表級鎖,所以在整個 DDL 過程中表都是鎖著不可寫入的。這使得在修改時容易導致數據庫 CPU、IO 等性能的消耗,以及主從同步的延遲。

上述過程,MySQL 自動完成轉存數據,交換表名和刪除舊表等操作,時間消耗最多的是在往臨時表(Server 層)插入數據的過程,整個 DDL 過程中,表是不能執行 DML 的。

2. IN-Place 方式

在 MySQL 5.5 版本中,增加了 IN-Place 方式。所謂 IN-Place 方式,就是索引創建在原表上直接進行,不會 copy 整個表,只需要在原來的 idb 文件上,新建所需要的索引頁,這比 Copy Table 節約極大的 IO 資源,且減少了 DDL 執行時長。

對比 Copy Table 和 IN-Place 兩種方式,我們看下官網的內容(MySQL 5.5):

(引自:https://dev.mysql.com/doc/refman/5.5/en/alter-table.html)

以上是 MySQL 5.5 版本中的說明,而 MySQL 5.6 版本,則正式提出了 COPY 和 INPLACE 兩種方式。

(引自:https://dev.mysql.com/doc/refman/5.6/en/alter-table.html)

3. Fast Index Creation(FIC)

Innodb 存儲引擎從 1.0.x 版本開始,對添加索引操作引入了新特性 Fast Index Creation(FIC 特性)。FIC 就是添加或刪除二級索引的時候,可以不用復制原表,而是在創建或刪除二級索引時會對原表加上一個 S 鎖(共享鎖),允許其他會話進行讀操作,但禁止寫操作,根據當前表數據創建索引,新索引創建完成之后,解除 S 鎖,允許寫操作。

FIC 在創建索引時不需要拷貝整表數據,但只對二級索引有效,對主鍵索引無效,對于主鍵索引的創建和刪除同樣需要重建一個臨時表。

對比 IN-Place 和 FIC,在網上查了一些資料,說“INPLACE 方式也稱為 InnoDB fast index creation”,那兩個應該不是一回事?我們看下官網的內容(MySQL 5.5):

(引自:https://dev.mysql.com/doc/refman/5.5/en/innodb-create-index-overview.html)

在 MySQL 5.5 的官方說明中,并沒有明確說明 FIC 就是 INPLACE,并且此版本中的 FIC 只支持二級索引和輔助索引的增加和刪除。而在 MySQL 5.6 官方說明中,則指出 Online DDL 特性基于 InnoDB FIC 構建。

(引自:https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl.html)

在 MySQL 8.0 的官方說明中,則指出了 FIC 是 Online DDL 的延伸和擴展。

(引自:https://dev.mysql.com/doc/refman/8.0/en/glossary.html)

所以,綜上所述,“INPLACE 方式也稱為 InnoDB fast index creation”這句話是對的,Online DDL 方式延伸了 Fast Index Creation,并逐漸擴展了 FIC 的范圍。

Since MySQL 5.6

在 MySQL 5.6 版本,引入了 Online DDL,這個新特性解決了早期版本 MySQL 進行 DDL 操作時帶來的鎖表問題,Online DDL 執行的過程中依然保證可以讀寫,不影響數據庫對外提供服務。

Online DDL

  1. Alter table …. , ALGORITHM [=] {DEFAULT|INPLACE|COPY}, LOCK [=] { DEFAULT| NONE| SHARED| EXCLUSIVE } 

ALGORITHM 子句指定執行 DDL 采用的方式,LOCK 子句描述持有鎖類型來控制 DML 的并發。其中,某些 DDL 語句不支持 Online DDL 的采用 COPY 方式,支持的就采用 INPLACE 方式,因為 Online DDL 是對早期 INPLACE 方式的增強,所以 INPLACE 方式根據是否涉及記錄格式的修改又分為:Rebuilds Table 和 No-Rebuilds Table,我們看下官方給出的內容(MySQL 5.7):

(引自:https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html)

基于 Online 對比 COPY 和 INPLACE,COPY 方法從表中的數據導出來的存放位置叫作 tmp_table,這是一個臨時表,是在 server 層創建的。INPLACE 方法從表中重建出來的數據是放在 tmp_file 里的,這個臨時文件是 InnoDB 在內部創建出來的,整個 DDL 過程都在 InnoDB 內部完成。

Online DDL 實現過程主要包括三個階段:Initialization 階段, Execution 階段,Commit Table Definition 階段。我們看下官方給出的內容(MySQL 8.0):

(引自:https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-performance.html)

我們詳細描述下這三個過程的過程:

(1) Initialization

  • 創建 frm 臨時文件
  • 持有EXCLUSIVE_MDL鎖,禁止讀寫
  • 根據 ALTER 操作,確定執行過程(COPY,Online-Rebuilds,Online-No-Rebuilds)
  • 更新數據字典的內存對象
  • 若是需要 Rebuilds,分配 row_log 對象記錄增量
  • 若是需要 Rebuilds,新建 ibd 臨時文件

(2) Execution(如果僅修改 MetaData,則無此部操作)

  • 降低EXCLUSIVE-MDL鎖,允許讀寫(COPY 僅允許讀)
  • 記錄執行期間產生的 DML 操作到 row_log(僅 Rebuilds 需要)
  • 掃描老表的聚集索引中每一條記錄 record
  • 遍歷新表的聚集索引和二級索引,逐一處理
  • 根據 record 構造對應的索引項
  • 將構造的索引項插入 sort_buffer 塊中
  • 將 sort_buffer 塊插入新的索引
  • 將 row_log 中的記錄應用到新臨時表,應用到最后一個 Block

(3) Commit Table Definition

  • 升級到EXECLUSIVE-MDL鎖,禁止讀寫
  • 重做 row_log 中最后一部分增量
  • 更新 InnoDB 的數據字典
  • 提交事務,寫 InnoDB redo 日志
  • 修改統計信息
  • Rename 臨時的 ibd 和 frm 文件
  • DDL 執行變更

我理解,Online DDL 中的 COPY 和 INPLACE 的區別在于有沒有原地,COPY 會將數據從 InnoDB 存儲層 copy 到 Server 層,而 INPLACE 不會;而 INPLACE 中的 Rebuilds 和 No-Rebuils 的區別在于,有沒有重建表。

PT-Online-Schema-Change(PT-OSC)

全稱 Percona Toolkit Online Schema Change,其中 Percona Toolkit 源自 Maatkit 和 Aspersa 工具,這兩個工具是管理 MySQL 最有名的工具,但 Maatkit 已經不維護了,全部歸并到 Percona Toolkit。Percona Toolkit 是一組高級的命令行工具,用來管理 MySQL 和系統任務。

PT-OSC(pt-online-schema-change)工具特點與優勢是支持并發 DML 操作。

GitHub’s Online Schema Transformer(GH-OST)

GH-OST 是 GitHub 的在線表定義轉換器,與 PT-OSC 的最大區別,在于 GH-OOST 的無觸發器設計。

至此,我們對比下 Online DDL、PT-OSC 和 GH-OST 的優缺點:

(引自:吳夏《在線DDL原理、對比分析和實踐》)

總結

傳統的 DDL,多數的 ALTER TABLE 操作是通過創建一個滿足需求的新表,之后拷貝數據到新表,在用新表替換老表,整個過程會加鎖,不支持并發 DML。在 MySQL 5.5 版本中,以 InnoDB Plugin 方式,優化了新增和刪除索引的操作,避免了這種數據 copy 的開銷,出現了 FIC。在 MySQL 5.6 開始增強了對各種 ALTER TABLE 操作支持,避免數據 copy 的開銷,同時允許在 DDL 進行中,并發執行 DML 操作。在 MySQL 5.7 實現了 ALTER TABLE RENAME INDEX 操作,即支持在線的索引重命名,這種特性的綜合,即 ONLINE DDL。PT-OST 通過改造原生 DDL 的方式,實現不鎖表的在線修改表結構。

【本文是51CTO專欄作者張開濤的原創文章,作者微信公眾號:開濤的博客,id:kaitao-1234567】

戳這里,看該作者更多好文

 

責任編輯:趙寧寧 來源: 51CTO
相關推薦

2021-11-26 07:31:43

Java反射程序

2023-06-01 13:15:23

2010-03-30 13:56:43

wifi無線技術結構

2012-08-20 09:57:00

虛擬化

2013-11-21 11:09:01

NAS虛擬化

2018-02-23 14:44:41

負載均衡技術分類

2018-11-21 14:27:54

VxLAN數據中心局域網

2025-03-12 06:00:00

加密流量安全

2022-09-20 08:00:32

VMWARE云原生

2011-05-23 11:17:42

2018-11-21 14:42:58

無線定位

2019-12-25 10:17:53

騰訊Elasticsear開源

2018-03-21 14:16:45

虛擬化技術解密

2019-12-25 09:10:44

技術研發指標

2018-09-07 14:53:30

MarTechAdTechROI

2022-11-03 12:06:41

2009-02-17 18:17:42

2009-06-18 16:13:14

J2EE開發

2015-11-03 09:28:52

Hybrid技術設計實現

2023-10-22 11:54:19

點贊
收藏

51CTO技術棧公眾號

国产乱理伦片a级在线观看| 精品在线视频免费| 国产精品美女久久久久| 一区二区三区av电影 | 免费观看中文字幕| 欧美一区二区三区黄片| 丝袜美腿亚洲色图| 欧美理论片在线观看| www.久久国产| 精品国产三区在线| 日韩欧美a级成人黄色| 一区二区在线观看网站| 日韩专区第一页| 蜜桃一区二区三区四区| 午夜精品久久久久久久白皮肤 | jlzzjlzz亚洲女人18| 国产精品亚洲综合色区韩国| www.国产一区| 亚洲激情 欧美| 欧美精品影院| 欧美色精品在线视频| 国产a级片网站| 伦xxxx在线| 久久精品视频一区二区| 91视频8mav| 国产性生活视频| 最新成人av网站| 久久视频在线视频| 国产精品成人无码免费| 久久99偷拍| 日韩午夜激情av| 永久免费的av网站| 精品3atv在线视频| 精品久久久中文| 欧美乱做爰xxxⅹ久久久| 日本www在线观看视频| 久久九九99视频| 精品伦理一区二区三区| 成人黄色免费视频| 国产精品一区二区三区四区| 国产日韩欧美在线看| 波多野结衣视频网址| 国产日韩欧美一区| 国语自产精品视频在线看一大j8| 亚洲欧美小视频| 国产精品国内免费一区二区三区| 一区二区三区视频在线| 亚洲黄色免费在线观看| 久久大胆人体视频| 精品国产污污免费网站入口| 性鲍视频在线观看| av成人在线网站| 欧美精品 日韩| 中文字幕丰满乱码| 日韩综合久久| 欧美久久久久中文字幕| 日韩成人av免费| 警花av一区二区三区| 777色狠狠一区二区三区| 黄色小视频免费网站| 国产三级一区| 91精品国产综合久久久蜜臀图片 | 国产精品免费av一区二区| 欧美私人啪啪vps| 久久久影视精品| 日韩av电影网址| 亚洲欧美日韩精品一区二区| 日韩美女激情视频| 亚洲视屏在线观看| 老鸭窝一区二区久久精品| 国产精品一二三视频| 国产一区二区在线视频聊天| 国产一区二区三区免费播放| 粉嫩精品一区二区三区在线观看| 人妻精品一区一区三区蜜桃91| 成人黄页毛片网站| 精品一区二区三区自拍图片区| 国产精品国产高清国产| 国产欧美一区二区精品久导航| 亚洲精品中字| 在线免费观看a视频| 亚洲大型综合色站| 99视频精品免费| 日韩城人网站| 亚洲成人久久久| 亚洲国产天堂av| 亚洲大全视频| 国内久久久精品| 国产美女www| 国产馆精品极品| 美女被啪啪一区二区| 日本电影在线观看网站| 亚洲亚洲人成综合网络| 日本在线视频www| 永久免费观看精品视频| 亚洲国产成人精品久久| 波多野结衣家庭教师在线观看| 欧美69视频| 日本精品视频在线观看| 国产视频一区二区三区四区五区| av影院午夜一区| 亚洲制服欧美久久| 9lporm自拍视频区在线| 欧美日韩亚洲丝袜制服| 国产黑丝一区二区| 欧美a级片视频| 97久久精品视频| 国产精品一级视频| 久久久久久综合| www.欧美黄色| 精品美女一区| 国产视频精品在线| 九九热视频精品| 欧美aaa在线| 精品国产乱码久久久久久郑州公司 | 国产成人免费网站| 日韩影视精品| 亚洲小少妇裸体bbw| 日韩欧美在线一区二区三区| 中文字幕免费在线看线人动作大片| 欧美精品aa| 国产热re99久久6国产精品| 午夜在线视频观看| 亚洲免费观看高清完整版在线观看熊 | 欧美精品色综合| 久久久久久九九九九九| 黄色工厂这里只有精品| 91香蕉国产在线观看| 粉嫩av在线播放| 欧美性猛交xxxx免费看漫画| 性猛交╳xxx乱大交| 97精品中文字幕| 国产精品久久久久福利| 免费成人av电影| 天天综合网 天天综合色| 欧美熟妇精品一区二区| 亚洲综合色网| 成人信息集中地欧美| av天在线观看| 在线观看一区二区视频| 国产精品扒开腿做爽爽| 免费亚洲视频| 久久精品国产精品国产精品污| 欧美xxxx做受欧美88bbw| 日韩美女天天操| www青青草原| 国产成人精品亚洲日本在线桃色| 51xx午夜影福利| 国产一区二区三区亚洲综合| 久青草国产97香蕉在线视频| av中文在线观看| 夜夜嗨av一区二区三区网页| 伊人影院在线观看视频| 欧美午夜精品| 国产一区二区免费在线观看| av电影在线免费| 亚洲黄色av女优在线观看 | 欧美三级视频在线观看| 在线观看免费小视频| 日本亚洲天堂网| 亚洲视频在线二区| 国产精品99久久免费| 欧美精品一区二区免费| 欧美一区二区三区黄片| 狠狠躁夜夜躁人人爽超碰91| 在线免费观看视频| 久久66热re国产| 亚洲色婷婷久久精品av蜜桃| eeuss国产一区二区三区四区| 午夜精品视频在线| 嫩草在线播放| 欧美日韩成人在线一区| 亚洲色婷婷一区二区三区| 国产不卡免费视频| 成人综合视频在线| 日韩综合在线| 波多野结衣久草一区| 男女羞羞在线观看| 在线视频中文亚洲| 国产黄色一区二区| 天天综合日日夜夜精品| 亚洲精品一区二区三区影院忠贞| 久久超碰97中文字幕| 97干在线视频| 国产成人影院| 99久热re在线精品视频| 中文字幕在线高清| 日韩在线观看av| 五月色婷婷综合| 欧美日韩激情一区二区三区| 久久精品99国产精| 国产亚洲婷婷免费| 激情成人在线观看| 久久精品在线| 99er在线视频| 日韩精品免费一区二区三区| 高清一区二区三区视频| 精品无人乱码一区二区三区| 欧美肥老妇视频| 国产视频在线看| 日韩精品一区二区三区在线| www.日韩一区| 污片在线观看一区二区| 欧美美女性生活视频| 91女神在线视频| 亚洲国产综合av| 久久字幕精品一区| 久久精品xxx| 91视频一区| 欧美日韩精品综合| 亚洲国产高清在线观看| 国产精品美女无圣光视频| 6699嫩草久久久精品影院| 久久精品亚洲一区| 黄色在线播放| 日韩精品福利网站| 亚洲国产综合网| 91精品国产综合久久福利| 免费av中文字幕| 狠狠久久五月精品中文字幕| 欧美交换国产一区内射| 国产精品福利影院| 麻豆av免费观看| 9色porny自拍视频一区二区| 91香蕉视频免费看| 麻豆精品久久精品色综合| 久久久久人妻精品一区三寸| 亚洲夜间福利| 2022中文字幕| 久久久国产精品| 亚洲精品中文字幕乱码三区不卡| 狠狠做深爱婷婷综合一区| 久久精品国产第一区二区三区最新章节 | 色综合久久影院| 在线看欧美日韩| 不卡在线视频| 亚洲天堂成人在线| 国产裸舞福利在线视频合集| 精品无人区太爽高潮在线播放| 亚洲精品国产精品国| 欧美一区二区播放| av av片在线看| 日韩欧美一二三区| av资源免费看| 日韩午夜激情视频| 亚洲精品国产精品国| 精品国产一区二区三区久久影院| 国产91视频在线| 欧美mv和日韩mv的网站| 亚洲成人av综合| 亚洲国产婷婷香蕉久久久久久| 色欲av永久无码精品无码蜜桃| 欧美精品一区二区三区视频| 丰满人妻一区二区三区免费| 亚洲精品一区在线观看| 天堂av资源网| 亚洲美女av黄| 国产视频网址在线| 久久久精品999| 91小视频xxxx网站在线| 欧美高清视频在线观看| av电影免费在线看| 青青久久av北条麻妃黑人| 日韩福利一区| 国产精品日韩在线| 国产精品白丝久久av网站| 国产精品久久精品视| 欧美电影免费网站| 日本一区二区三区免费看| 成人3d精品动漫精品一二三| 中文字幕一区二区三区四区五区 | 无码少妇一区二区三区芒果| 日韩电影网1区2区| 在线视频观看一区二区| 成熟亚洲日本毛茸茸凸凹| 中文在线一区二区三区| 国产午夜精品一区二区| 精品少妇一区二区三区密爱| 亚洲最快最全在线视频| 国产黄色免费观看| 欧美日韩国产一级片| 亚洲国产精品一| 国产亚洲福利一区| 二区三区四区高清视频在线观看| 久久久久久国产精品美女| 69久成人做爰电影| 91免费在线视频| 四虎884aa成人精品最新| 亚欧洲精品在线视频免费观看| 亚洲天堂免费| 亚洲精品无码久久久久久| 精品一区二区三区欧美| 国产一级黄色录像| 国产精品毛片高清在线完整版| 麻豆亚洲av熟女国产一区二| 色综合 综合色| 国产av无码专区亚洲av| 亚洲欧洲在线播放| 怡红院在线播放| 国产精品久久久久久久午夜 | 日本不卡一区| 欧美日韩久久| 黄色手机在线视频| www.欧美色图| 欧美激情图片小说| 91传媒视频在线播放| 好吊视频一二三区| 久久久精品一区| 综合日韩av| 99久久99久久精品国产片| 青青草国产免费一区二区下载 | 亚洲国产另类久久精品| 最新真实国产在线视频| 欧美在线视频观看免费网站| 日韩成人在线观看视频| 亚洲福利av在线| 在线亚洲观看| 黑人玩弄人妻一区二区三区| 国产精品福利电影一区二区三区四区| 国产精品人人人人| 精品国产伦一区二区三区观看体验 | 久久久精品国产亚洲| 欧美韩国亚洲| 九色综合日本| 1024精品一区二区三区| 国产大学生av| 亚洲毛片av在线| 97精品人妻一区二区三区在线| 亚洲人成伊人成综合网久久久| 大黄网站在线观看| 91丨九色丨国产| 欧美成熟视频| 少妇高潮一69aⅹ| 亚洲桃色在线一区| 国产又黄又猛又爽| 久久久av网站| 国产 日韩 欧美| 免费观看黄色大片| 国精产品一区一区三区mba桃花| 欧美老女人性生活视频| 91激情在线视频| 国产小视频免费在线网址| 日本视频久久久| 少妇一区二区视频| 亚洲男人天堂色| 国产清纯白嫩初高生在线观看91 | 日韩电影毛片| 鬼打鬼之黄金道士1992林正英| 综合天堂av久久久久久久| 中文字幕乱码在线人视频| 亚洲激情自拍视频| www.蜜桃av.com| 久久久久久噜噜噜久久久精品| 亚洲性视频在线| 日韩美女爱爱视频| 99精品热视频| 天天爱天天做天天爽| 自拍偷拍亚洲欧美| av日韩久久| 777av视频| 久久综合九色欧美综合狠狠| 亚洲图片在线视频| 中日韩午夜理伦电影免费| 久久日本片精品aaaaa国产| 宅男一区二区三区| 国产精品一区二区果冻传媒| 国产精品16p| 亚洲精品视频免费| 国产69精品久久| 男人j进女人j| 99re这里只有精品6| 亚洲国产精品无码久久久| 日韩中文字幕国产精品| 亚洲精品一区二区三区中文字幕 | 91精品国产闺蜜国产在线闺蜜| 欧美一区二区大片| 免费高潮视频95在线观看网站| 欧美一级二级三级九九九| 理论电影国产精品| 国产无码精品一区二区| 亚洲欧美另类国产| 午夜不卡一区| 黄色一级片在线看| 国产欧美一区二区三区在线老狼| 国产精品久久久久久久成人午夜| 久久久久久久久中文字幕| 精品国产一区二区三区久久久樱花| 欧美一级xxxx| 欧美日韩一区二区在线| 欧美性天天影视| 含羞草久久爱69一区| 青青草国产精品亚洲专区无| 黑鬼狂亚洲人videos| 国产视频精品免费播放| 亚洲18在线| 国产免费毛卡片| 亚洲欧美另类久久久精品| 三级在线观看| 51午夜精品| 日本aⅴ精品一区二区三区 |