增加字段相信大家應該都不陌生,隨手就可以寫出來,給 MySQL 一張表加字段執行如下 sql 就可以了:
ALTERTABLEtbl_tplADDtitle(255)DEFAULT''COMMENT'標題'AFTERid;
但是線上的一張表如果數據量很大呢,執行加字段操作就會鎖表,這個過程可能需要很長時間甚至導致服務崩潰,那麼這樣操作就很有風險了。
那麼,給 MySQL 大表加字段的思路如下:
① 創建一個臨時的新表,首先復制舊表的結構(包含索引)
代碼如下復制代碼 createtablenew_tablelikeold_table;② 給新表加上新增的字段
③ 把舊表的數據復制過來
代碼如下復制代碼 insertintonew_table(filed1,filed2…)selectfiled1,filed2,…fromold_table④ 刪除舊表,重命名新表的名字為舊表的名字
不過這裡需要注意,執行第三步的時候,可能這個過程也需要時間,這個時候有新的數據進來,所以原來的表如果有字段記錄了數據的寫入時間就最好了,可以找到執行這一步操作之後的數據,並重復導入到新表,直到數據差異很小。不過還是會可能損失極少量的數據。
所以,如果表的數據特別大,同時又要保證數據完整,最好停機操作。
另外的方法:
1.在從庫進行加字段操作,然後主從切換
2.使用第三方在線改字段的工具
一般情況下,十幾萬的數據量,可以直接進行加字段操作。