mysql刪除大量資料

2022-09-14 05:15:09 字數 1011 閱讀 5117

mysql刪除大量資料時使用批量刪除,批量刪除時,不要使用排序,會影響刪除效率

delete  from `table_name` where id< 66169770 limit 1000000;
以下資料摘自

生產環境,往往需要更新/刪除大量的資料,由於很可能消耗太多的io資源,對於生產繁忙的系統,需要小心,以避免對生產環境造成影響。

刪除大量資料還有一些***,比如主從延時、資料檔案無法收縮、鎖表等。

以下是一些要指引和規則:

1、批量刪除,這樣往往可以工作得更快,你可能需要在每次批量刪除前sleep一段時間,控制刪除的頻率,這樣的目的是減少對生產系統的io衝擊,把符合平均分布,避免從庫滯後太多;

2、可以考慮分割槽表技術,我很少用分割槽表,但刪除乙個分割槽,顯然比刪除大量資料簡單方便的多,這也是分割槽表清理/歸檔資料的優勢所在;

3、按照主鍵的序列分批分批,或者基於時間分批分批,你總可以找到一種方式批量刪除,如果實在沒有批量刪除的方式,可能你的表結構設計得不好;

4、基於硬體的效能,每批刪除的記錄數,可以選擇幾百到幾千到幾萬的資料量,但不要太大,mysql很難同時處理好大事務和隨機小事務;

5、如果要刪除大部分資料,那麼可以考慮的方式是,建立乙個新錶,insert要保留的資料,然後切換表;

6、對於大表(innodb)刪除大量資料,如果是乙個很大的事務,中止刪除資料的操作,可能需要幾倍的時間用於回滾,導致嚴重的io瓶頸,而批量刪除可以讓我們的回滾恢復得快得多。

7、需要留意空間的釋放,選擇獨立表空間會更有利於釋放空間。

mysql大量資料刪除

近期有一張表,存量有3000多萬資料,每天還在以40萬左右增長。業務上準備只保留兩個月的資料。準備刪除。這個量直接刪除,可能會導致鎖表。要麼寫個儲存過程,迴圈,每次刪除1000條,sleep下。當然這個方法很不錯。但delete是dml語言,刪除只是把狀態標記為刪除,並沒有刪除資料檔案,也就是空間索...

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...