[英]Altering the data type of a column in a HUGE table. Performance issues
我想在我的桌子上運行這個:
ALTER TABLE table_name MODIFY col_name VARCHAR(255)
但是我的表很大,它有超過 6500 萬(6500 萬)行。 現在當我執行時,執行這個命令需要將近 50 分鍾。 有什么更好的方法來改變表格?
嗯,你需要
ALTER TABLE table_name CHANGE col_name new_name VARCHAR(255)
但是,您是對的,需要一段時間才能進行更改。 確實沒有任何更快的方法來更改 MySQL 中的表。
您擔心變更期間的停機時間嗎? 如果是這樣,這是一種可能的方法:將表復制到新表,然后更改副本上的列名,然后重命名副本。
您可能已經發現在生產系統中定期更改表中的列名並不是一個好主意。
使用 percona 工具包的另一種變體https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html
您可以使用 Oak 在不停機的情況下處理架構更改。
Oak-online-alter-table復制原始表的模式,應用您的更改,然后復制數據。 仍然可以調用 CRUD 操作,因為 Oak 在原始表上放置了一些觸發器,因此在操作過程中不會丟失任何數據。
請參考其他問題,其中橡樹的作者對此機制進行了詳細解釋,並建議了其他工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.