大表分批删除脚本之MySQL版

Posted 万剑齐发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大表分批删除脚本之MySQL版相关的知识,希望对你有一定的参考价值。

经常需要定期对某些表删除历史数据,通常这样的表的数据又是非常巨大,为了减轻对线上环境的影响,删除时必须分成小批量来进行。

以前分享过SQLServer的版本

下面是mysql版本:

 1 delimiter $$
 2 drop procedure if exists proc_delete_old_data;
 3 create procedure proc_delete_old_data()
 4 begin
 5 lp : loop
 6     delete from mytable where createdtime <= date_sub(curdate(),interval 1 month) limit 5000;
 7     if row_count() < 5000 then
 8         leave lp;
 9     end if;
10     select sleep(1);
11 end loop;
12 end $$
13 
14 delimiter ;
15 set binlog_format = STATEMENT;
16 call proc_delete_old_data;

本文地址:http://www.cnblogs.com/ajiangg/p/6604317.html

以上是关于大表分批删除脚本之MySQL版的主要内容,如果未能解决你的问题,请参考以下文章

删除数据-大表根据rowid来删除部分数据

MySQL8 大表清空和删除正确方法

sql server编写archive通用模板脚本实现自动分批删除数据

有一个大表,大表由于录入时候有个空置,现在将空置赋予日期

MySQL大表清空和删除正确方法

dba+工具:pt-archiver重构版,轻松搞定大表数据归档