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

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

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

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

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

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

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

    網(wǎng)友評(píng)論