MySQL 5.7 online DDL特性介紹

feelpurple發表於2016-04-17
online DDL特性可以使很多ALTER TABLE操作避免表的複製,以及在DDL執行過程中對DML操作的阻塞。

它具有下面的優點:

在繁忙的生產系統中,當你修改索引或欄位定義的時候,你可能會讓一張表再幾分鐘內不可用,這個特性提高了資料庫的響應速度和高可用性。

這個特性讓你在DDL操作的時候,透過選擇是否阻塞對整張表的訪問(LOCK=EXCLUSIVE語句,既不允許查詢,也不允許DML操作),或允許查詢但不允許DML操作(LOCK=SHARED語句),或同時允許查詢和DML操作(LOCK=NONE語句),來平衡效能和併發。當你忽略LOCK語句或者指定LOCK=DEFAULT時,MySQL會根據操作的型別允許儘可能多的併發。

透過執行in-place操作而不是建立整張表的複製和相關索引的重建,來避免磁碟I/O壓力的大量增加。

--使用INPLACE方式增加主鍵

ALTER TABLE add_pk_via_inplace ADD PRIMARY KEY (c1,c2,c3), ALGORITHM=INPLACE;

--以重建的方式刪除索引,是否磁碟空間

drop index i_dtyp_big on big_table, algorithm=copy;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2082683/,如需轉載,請註明出處,否則將追究法律責任。

相關文章