作為一名DBA,對數(shù)據(jù)庫進行DDL操作非常多,如添加索引,添加字段等等。對于MySQL數(shù)據(jù)庫,DDL支持的并不是很好,一不留心就導致了全表被鎖,經(jīng)常搞得剛?cè)腴T小伙伴很郁悶又無辜,不是說MySQL支持Online DDL么,不是說不會鎖表的么?是的,令人高興的是從MySQL5.6開始就支持部分DDL Online操作了,但并不是全部喔,今天這里就對我們常用的DDL進行總結(jié)和說明,讓操作DDL的小伙伴從此做到心中有數(shù),得心應(yīng)手,讓老板們再也不用擔心我們做DDL咯。

我自己遵守的一條黃金準則:DDL永遠不要在業(yè)務(wù)高峰期間執(zhí)行。

環(huán)境說明:本次的測試服務(wù)器配置如下

      CPU:32 cores
      MEM:128G
      DISK: SSD(固態(tài)硬盤)
      MySQL版本:5.6.27以上

一、MySQL執(zhí)行DDL原理

     MySQL各版本,對于DDL的處理方式是不同的,主要有三種:

  • Copy Table方式: 這是InnoDB最早支持的方式。顧名思義,通過臨時表拷貝的方式實現(xiàn)的。新建一個帶有新結(jié)構(gòu)的臨時表,將原表數(shù)據(jù)全

    網(wǎng)友評論