MySQL中的事件(Event)是一種類似于定時(shí)任務(wù)的機(jī)制,可以定時(shí)執(zhí)行某些指定的操作。如果你習(xí)慣于使用cron或者Windows計(jì)劃任務(wù),那么事件是你在數(shù)據(jù)庫(kù)中定期執(zhí)行任務(wù)的選擇。
看下面的示例:
CREATE EVENT `my_event` ON SCHEDULE EVERY 1 DAY STARTS '2019-01-01 00:00:00' DO BEGIN -- 在此處添加要執(zhí)行的任務(wù) -- END;
以上代碼說(shuō)明了一個(gè)每天執(zhí)行一次的事件(my_event)。需要注意的是,事件需要有一個(gè)名稱,這個(gè)名稱以字母開(kāi)始,并只包含字母、數(shù)字、下劃線和美元符號(hào)。事件還必須指定開(kāi)始時(shí)間(starts)和執(zhí)行間隔(schedule),以及要執(zhí)行的操作(do)。
事件可以用來(lái)做很多事情,比如備份數(shù)據(jù)庫(kù)、清理垃圾數(shù)據(jù)、更新緩存等等。如果需要執(zhí)行MySQL語(yǔ)句,可以直接在do語(yǔ)句中寫(xiě)入SQL語(yǔ)句。如果需要執(zhí)行一段程序,可以編寫(xiě)存儲(chǔ)過(guò)程,并在do語(yǔ)句中調(diào)用。
最后要注意的是,MySQL的事件需要事件調(diào)度器默認(rèn)啟用,否則事件將無(wú)法執(zhí)行??梢酝ㄟ^(guò)以下命令檢查調(diào)度器的狀態(tài):
SHOW VARIABLES LIKE 'event_scheduler';
如果值為ON,則表示調(diào)度器已啟用。如果為OFF,則需要執(zhí)行以下命令開(kāi)啟調(diào)度器:
SET GLOBAL event_scheduler = ON;
總結(jié)來(lái)說(shuō),MySQL的事件(Event)提供了一種方便的方式來(lái)執(zhí)行定期任務(wù),可以用來(lái)實(shí)現(xiàn)備份、清理、更新數(shù)據(jù)等操作。