mysql定期削除サブテーブル
1364 ワード
データテーブルのデータ量が大きすぎるため、毎日定時に分表の記憶過程を実行し、時間が長くなると分表の数が多すぎて、定期的に分表を削除する必要がある.
ストレージ・プロシージャを作成し、このストレージ・プロシージャを毎日タイミングよく実行すればよい
CREATE PROCEDURE `sp_droptables`()
begin
declare t_name varchar(64) ;
declare isFinished int default false;
declare log_table_list cursor for (select table_name from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA=' ' and TABLE_NAME like 'table_%') ;
declare continue handler for not found set isFinished=true;
open log_table_list;
repeat
fetch log_table_list into t_name;
if isFinished = false then
if datediff(now(),DATE_FORMAT(replace(t_name,'table_',''),'%Y-%m-%d') )>30 then
set @sqltext=concat('drop table ',t_name,';');
PREPARE drop_table from @sqltext;
execute drop_table ;
end if;
end if;
until isFinished
end repeat;
close log_table_list;
end
ストレージ・プロシージャを作成し、このストレージ・プロシージャを毎日タイミングよく実行すればよい
DROP EVENT IF EXISTS `E_DROPTABLES`;
CREATE EVENT `E_DROPTABLES`
ON SCHEDULE
EVERY '1' DAY STARTS '2019-12-26 03:00:00'
ON COMPLETION PRESERVE
DO BEGIN
CALL sp_droptables;
END