MySQL 數據庫刪除大批量數據的優化

在MySQL數據庫使用中,有的表存儲數據量比較大,達到每天三百萬條記錄左右,此表中建立了三個索引,這些索引都是必須的,其他程序要使用。由於要求此表中的數據只保留當天的數據,所以每當在凌晨的某一時刻當其他程序處理萬其中的數據後要刪除該表中昨天以及以前的數據,使用delete刪除表中的上百萬條記錄時,MySQL刪除速度非常緩慢每一萬條記錄需要大概4分鐘左右,這樣刪除所有無用數據要達到八個小時以上,這是難以接受的。查詢MySQL官方手冊得知刪除數據的速度和創建的索引數量是成正比的,於是刪除掉其中的兩個索引後測試,發現此時刪除速度相當快,一百萬條記錄在一分鐘多一些,可是這兩個索引其他模塊在每天一次的數據整理中還要使用,於是想到了一個折中的辦法:
在刪除數據之前刪除這兩個索引,此時需要三分鐘多一些,然後刪除其中無用數據,此過程需要不到兩分鐘,刪除完成後重新創建索引,因爲此時數據庫中的數據相對較少,約三四十萬條記錄(此表中的數據每小時會增加約十萬條),創建索引也非常快,約十分鐘左右。這樣整個刪除過程只需要約15分鐘。對比之前的八個小時,大大節省了時間。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章