大表更改默認值使用alter table不重建表,直接修改.frm 在mysql中執行很大部分的修改動作,都需要重建一個表,然後把數據放進去,最後刪除舊的表!有時候要是有索引的列上進行大批且頻繁的表的時候會導致系統的性能嚴重下降,這裡可以在修改SQL上做部分調整,減輕相關的構建結構帶來的系統壓力問題! www.2cto.com 例如 在修改一個表的默認值為8的時候,常規做法為: (1):alter table modes modify column dept tinyint(3) not null default 8; 這裡通過一些show status分析出,每次都要做大量的句柄的讀取和插入操作,類似於從新構建了一張新表的樣式,這樣在一些大表,上千萬的數據量會出現瓶頸問題! 這裡我們需要靈活知道mysql的相關默認值實際是放在相關的表結構.frm文件中;我們可以不經過數據層,可以直接調整!上述的modify column會導致相關的表進行拷貝操作,不利於系統的正常穩定運行,可以使用下面方式; www.2cto.com (2):alter table modes alter column dept set default 8; 這裡只是更改了相關的frm文件,沒有改動表,因此速度很快的即可完成; 總結:在此我們可以注意到相關的alter table後面跟不同形式的命令,可以對數據產生了不同程度的影響,這裡還有一個change column操作也是不一樣的!