3
我有一個250GB的500M行MySQL表,並且想要刪除它的一列。 該列是VARCHAR(255)。我希望儘可能少的停機時間執行此操作。想法:如何從MySQL大表中刪除一列
- 是否有任何配置可以添加,這將有助於此操作?
- 在每一行之前在php中迭代並刪除其中的值會更好嗎?
- 事後需要優化表嗎?
- 對於這樣的程序,合理的時間估計是什麼?
我有一個250GB的500M行MySQL表,並且想要刪除它的一列。 該列是VARCHAR(255)。我希望儘可能少的停機時間執行此操作。想法:如何從MySQL大表中刪除一列
爲了保證最小的停機時間,我會親自備份並恢復到備用數據庫,然後再執行「刪除列」操作,然後再恢復。
它可能是,但它會需要更長的時間和更容易出錯,我會說。
沒錯,好主意,也可以考慮使用手
OPTIMIZE TABLE之前ANALYZE TABLE; 當DBMS脫機進行定期維護時,應運行OPTIMIZE命令。該命令是非標準SQL。
'2.在每行之前迭代php並刪除它裏面的值會更好嗎? - 絕對不是,在mysql中自己做。 – TZHX
首先在標準中使用的列上添加索引。不要使用php。 php會在RAM中加載它的變量,因爲沒有RAM可以同時處理250 GB,所以你應該循環遍歷塊,這肯定比mysql操作需要更多的時間。 – Leri
@DainisAbols但是這不需要一天嗎? – Noam