有個千萬級別的大表需要更改表結構。目前想不影響正式環境情況下在線運行
經百度 參考pt的做法。
1,建立一張新表(新表結構為需要更改之后的表結構)
2,對原表建立三個觸發器,insert,update,delete
3,insert into 新表 select 原表
4,rename 新表為原表,原表為老表
以上做法是為了,可以在不鎖表的情況下,在線dml表變更,但我實際測驗中發現,insert into select 操作還是會對select 之后的表鎖住,有死鎖存在。有沒有踩過坑的,指點一下。歡迎交流。。。
uj5u.com熱心網友回復:
insert into 新表 select 原表 會鎖表的哈。 建議使用 SELECT INTO OUTFILE /LOAD DATA INFILE 來實作。uj5u.com熱心網友回復:
現在的版本都支持在線DDL了。看你要改的具體內容,如果支持非copy式在線DDL 那么完全可以直接改uj5u.com熱心網友回復:
這種在線修改是不是可以這樣理解,觸發器+快照檔案匯入匯出。不會存在鎖表
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/249186.html
標籤:MySQL
上一篇:資料主鍵id重新編號
下一篇:查詢本年四個季度的資料
