84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
走同样的路,发现不同的人生
給 MySQL 大表加上字段的思路如下:
建立一個暫時的新表,先複製舊表的結構(包含索引)
create table new_table like old_table;
給新表格加上新增的欄位
把舊表的資料複製過來
insert into new_table(filed1,filed2…) select filed1,filed2,… from old_table
刪除舊表,重新命名新表的名字為舊表的名字
需要注意下,執行第三步的時候,可能這個過程也需要時間,這個時候有新的數據進來,所以原來的表如果有字段記錄了數據的寫入時間就最好了,可以找到執行這一步操作之後的數據,並重複匯入到新表,直到數據差異很小。不過還是會可能損失極少量的數據。
所以,如果表格的資料特別大,同時又要確保資料完整,最好停機操作。
percona有在線ddl的工具,原理就是使用臨時表加新資料轉移觸發器,可以用一下
給 MySQL 大表加上字段的思路如下:
建立一個暫時的新表,先複製舊表的結構(包含索引)
create table new_table like old_table;
給新表格加上新增的欄位
把舊表的資料複製過來
insert into new_table(filed1,filed2…) select filed1,filed2,… from old_table
刪除舊表,重新命名新表的名字為舊表的名字
需要注意下,執行第三步的時候,可能這個過程也需要時間,這個時候有新的數據進來,所以原來的表如果有字段記錄了數據的寫入時間就最好了,可以找到執行這一步操作之後的數據,並重複匯入到新表,直到數據差異很小。不過還是會可能損失極少量的數據。
所以,如果表格的資料特別大,同時又要確保資料完整,最好停機操作。
percona有在線ddl的工具,原理就是使用臨時表加新資料轉移觸發器,可以用一下