MySql刪除大量資料

2022-09-22 06:06:09 字數 949 閱讀 5724

再介紹刪除解決方案前,先來回顧下三種刪除表的操作:delete語句、truncate語句以及drop語句。

drop > truncate > delete

下面說下刪除大量資料的解決方案:

delete from t_test limit 100000
或者建立儲存過程:

delimiter $$

drop procedure if exists proc_batch_delete;

create procedure proc_batch_delete()

begin

declare tcount bigint;

select count(0) into tcount from t_test;

while tcount>0 do

delete from t_test limit 1000;

end while;

select tcount;

end $$

delimiter ;

//呼叫儲存過程 call proc_batch_delete;

create table new_test like t_test;
表結構與原表結構相同

這裡要看下是刪除的資料多,還是保留的資料多,我們這裡預設刪除的資料多,所以新錶中只保留有用的資料!幾千萬的資料量一定要分批插入,一次50萬為最佳,畢竟mysql的資料處理能力有限,可以按id查詢後插入!

insert into new_test select *from t_test where id>500000 and id<=1000000;

drop table t_test;

alter table t_test_new rename t_test;
(未完待續。。。)

mysql大量資料刪除

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

mysql刪除大量資料

mysql刪除大量資料時使用批量刪除,批量刪除時,不要使用排序,會影響刪除效率 delete from table name where id 66169770 limit 1000000 以下資料摘自 生產環境,往往需要更新 刪除大量的資料,由於很可能消耗太多的io資源,對於生產繁忙的系統,需要小...

mysql批量刪除大量資料

mysql批量刪除大量資料 假設有乙個表 syslogs 有1000萬條記錄,需要在業務不 停止的情況下刪除其中statusid 1的所有記錄,差不多 有600萬條,直接執行 delete from syslogs where statusid 1 會發現刪除失敗,因為lock wait timeo...