删除日志


BEGIN
         declare i,delcnt int default 0;
         declare arcivedays int default 180;
         declare arcivedate datetime; 
         set arcivedate = date_sub(now(), interval arcivedays day);
         set session autocommit=1;
         set session sql_mode='';
         set session tx_isolation='REPEATABLE-READ';
         set session binlog_format=STATEMENT;
         
         select count(*) into delcnt from ts_inft_log where accept_tm<arcivedate;
         set i=0;
         while i < delcnt do
                   
                   select sum(crc32(ifnull(status,'0'))) into @blackhole from (select status from ts_inft_log where accept_tm<arcivedate order by accept_tm,id limit 1000) t;
                   start transaction;
                   delete from ts_inft_log where accept_tm<arcivedate order by accept_tm,id limit 1000;
         
                   commit;
                   select sleep(0.3) into @blackhole;
                   set i=i+1000;
         end while;
         set session sql_mode=default;
         set session binlog_format=default;
         set session tx_isolation=default;
         set session autocommit=default;
END


你可能感兴趣的:(删除日志)