千萬級、百萬級數據刪除優化

場景:

在mysql上面刪除大量數據(千萬級),由於不是清空數據,故不能使用TRUNCATE 語句(有個TRUNCATE可參考:MySQL DELETE語句與TRUNCATE TABLE語句

問題:

  1. 在正常DELETE下,刪除十分緩慢;
  2. 由於索引的原因,每次刪除都要相應的更新索引,越往後索引碎片越多,即越往後越慢

解決方案:

  1. 完整備份;
  2. 保存索引DDL,刪除索引,刪除速率與索引量成正比;保存索引DDL,刪除索引,刪除速率與索引量成正比;
  3. 關閉日誌記錄;
  4. 刪除後重建索引

TIP:
如果需要保留的數據比較少的話,可以把要保留的數據備份出來。DROP原表,重新創建,先不要急着創建索引、主鍵,把數據導回去,然後在建索引、約束之類的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章