天天看點

MySQL5.7快速修改表中字段長度

在mysql 5.5版本時,商用環境更新,有一個表存在六千多萬資料,更新時需要修改這個表其中一個varchar類型字段的長度,當時用了大概4個多小時,還沒有結束,之後我們系統mysql更新到5.7版本,再一次更新模拟測試中,又修改了該表的字段長度,這次用時為7個多小時,下面是記錄的時間。(進入mysql指令行,執行tee upgrade.log,之後執行的sql都會記錄到該log中,當不需要記錄時,執行notee)

Query OK, 0 rows affected (7 hours 48 min 9.15 sec)
Records: 0  Duplicates: 0  Warnings: 0      

雖然沒有sql資訊,但該條sql執行時,使用如下指令檢視的info資訊确實就是在修改該表,是以可确定,這個時間就是這張表的字段修改造成的

show full processlist      

在5.7上官網上檢視Online DDL Operations介紹,發現添加某個參數後,修改表結構不用拷貝資料,這樣就會大大的節省了時間,改參數為ALGORITHM=INPLACE,但該參數隻能用于字段長度變長的情況,否則值應該填寫為copy

mysql> ALTER TABLE db.table MODIFY COLUMN IPADDRESS VARCHAR(60), ALGORITHM=INPLACE;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0      

添加了改參數後,修改字段長度的時間從七個多小時一下子就下降到了0.06秒,可以說是瞬間就執行結束,且修改成功

MySQL5.7快速修改表中字段長度

轉載于:https://www.cnblogs.com/qq931399960/p/10973406.html