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

場景:

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

問題:

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

解決方案:

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

TIP: 若是須要保留的數據比較少的話,能夠把要保留的數據備份出來。DROP原表,從新建立,先不要急着建立索引、主鍵,把數據導回去,而後在建索引、約束之類的。sql

相關文章
相關標籤/搜索