索引建立優化:
fast index creation
mysql5.5以前不包括5.5,建立索引或修改刪除這類的ddl操做過程爲:
一、首先建立一張新的臨時表,表結構爲經過alter table 新定義的結構
二、而後把原表中的數據導入到臨時表中
三、接着刪除原表
四、最後把臨時表重命名爲原來的表名
innodb 存儲引擎從1.0.x開始支持fast index creation(快速索引建立)-簡稱:FIC
對於輔助索引的建立,innodb存儲引擎會對建立索引的表加上一個S鎖,在建立過程當中,不須要重建表,速度快了不少,刪除輔助索引也會快不少,
存在的問題:
(1)在建立過程當中只能對該表進行讀操做,如有大量的事物須要對目標表進行寫操做,數據庫服務器不可用。
(2)FIC方式只限於輔助索引,對於主鍵的建立與刪除一樣須要重建一張表
online ddl
雖然FIC可讓innodb存儲引擎避免建立臨時表,從而提升了索引的建立效率,可是會阻塞DDL操做,從mysql5.6開始支持了online DDL(在線數據定義)操做,
其容許輔助索引建立的同時,還容許其餘諸如insert,update,delete這類的DDL操做,此外一下這幾類DDL操做均可以經過「在線」的方式進行操做:
(1)輔助索引的建立與刪除
(2)改變自增加值
(3)添加刪除外鍵約束
(4)列的重命名mysql