在建设实时数仓的过程中,用到了Mysql存放增量的结果数据,所以需要定时清理历史数据,为了避免影响的线上的实时数据写入,采用了按照最后更改时间,分段删除的方法。对应的存储过程如下:
CREATE PROCEDURE `db01`.`sp_delete_rt_ord_data`()
begin
set session binlog_format='STATEMENT';
label:
while(1=1)
do
delete from db01.table_xxx where updt <date_add(curdate(),interval -2 day) limit 10000;
set @var=ROW_COUNT();
if @var=0 then
leave label;
end if;
end while;
end;