MySQL是一款常用的開源數(shù)據(jù)庫管理軟件,經(jīng)常在服務器中被使用。為了避免數(shù)據(jù)庫存儲過多的歷史數(shù)據(jù),我們需要定時清除數(shù)據(jù)。下面是MySQL定時清除數(shù)據(jù)的方法。
第一步:打開MySQL,選擇需要執(zhí)行定時清除數(shù)據(jù)的數(shù)據(jù)庫,并創(chuàng)建一個存儲過程。以下是一個定時清除一個月之前數(shù)據(jù)的存儲過程示例:
DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `clear_data`() BEGIN DELETE FROM `table_name` WHERE `created_time`<= DATE_SUB(CURDATE(), INTERVAL 1 MONTH); END$$ DELIMITER ;
以“DELIMITER $$”為開頭表示定義新的結(jié)束符“$$”。
以“CREATE DEFINER=`root`@`localhost` PROCEDURE `clear_data`()”為開頭表示定義一個名為“clear_data”的存儲過程。
“DELETE FROM `table_name` WHERE `created_time`<= DATE_SUB(CURDATE(), INTERVAL 1 MONTH);”表示該存儲過程執(zhí)行的操作,即刪除創(chuàng)建時間早于一個月的數(shù)據(jù)。
“DELIMITER ;”作為結(jié)尾表示將結(jié)束符還原為“;”。
第二步:在MySQL中創(chuàng)建一個事件,并將該事件與存儲過程關聯(lián)。以下是一個每月執(zhí)行一次清除數(shù)據(jù)的事件示例:
CREATE EVENT `clear_data_event` ON SCHEDULE EVERY 1 MONTH STARTS '2021-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO CALL clear_data();
“CREATE EVENT `clear_data_event`”表示創(chuàng)建一個名為“clear_data_event”的事件。
“ON SCHEDULE EVERY 1 MONTH STARTS '2021-01-01 00:00:00'”表示每月執(zhí)行一次,開始時間為2021年1月1日零點。
“ON COMPLETION NOT PRESERVE ENABLE”表示當事件完成后不會保存并被禁用。
“DO CALL clear_data()”表示該事件執(zhí)行的操作,即調(diào)用上面創(chuàng)建的存儲過程。
現(xiàn)在,我們已經(jīng)配置好定時清除MySQL中的數(shù)據(jù)了。