近期有一張表,存量有3000多萬資料,每天還在以40萬左右增長。業務上準備只保留兩個月的資料。準備刪除。
這個量直接刪除,可能會導致鎖表。
要麼寫個儲存過程,迴圈,每次刪除1000條,sleep下。當然這個方法很不錯。但delete是dml語言,刪除只是把狀態標記為刪除,並沒有刪除資料檔案,也就是空間索引並沒有釋放。依然解決不了資料量大對業務帶來慢的困惑。那麼如何釋放空間和索引呢?
mysql提供了optimize,對大量delete資料後的表進行優化,釋放空間和索引。注意:optimize table 命令只對 myisam 、 bdb 和 innodb 表起作用。
其實還有乙個不錯的辦法:按月建立分割槽。 對要刪除的資料,按分割槽,drop,徹底delete
mysql刪除大量資料
mysql刪除大量資料時使用批量刪除,批量刪除時,不要使用排序,會影響刪除效率 delete from table name where id 66169770 limit 1000000 以下資料摘自 生產環境,往往需要更新 刪除大量的資料,由於很可能消耗太多的io資源,對於生產繁忙的系統,需要小...
MySql刪除大量資料
再介紹刪除解決方案前,先來回顧下三種刪除表的操作 delete語句 truncate語句以及drop語句。drop truncate delete 下面說下刪除大量資料的解決方案 delete from t test limit 100000或者建立儲存過程 delimiter drop proce...
mysql批量刪除大量資料
mysql批量刪除大量資料 假設有乙個表 syslogs 有1000萬條記錄,需要在業務不 停止的情況下刪除其中statusid 1的所有記錄,差不多 有600萬條,直接執行 delete from syslogs where statusid 1 會發現刪除失敗,因為lock wait timeo...