SyntaxHighlighter

2014年2月15日土曜日

MySQLのeventで定期的なSQL実行をするよ

定期的にDBのデータを削除したい、なんて要求は結構あるんじゃないかと思います。

crondとかでやっても良いのでしょうが、SQL仕事はMySQLに任せるほうが役割分担としてスッキリすると思います。

まずは、イベントスケジューラの機能をONにします。

# mysql -u root -pyourpassword
mysql> SET GLOBAL event_scheduler=ON;

で、イベントを追加。10分ごとにBEGIN 以下のSQL文を実行するようになります。ちなみに、このSQL文は現在時間よりmodifiedの時間が20分より過去である場合、そのレコードをdeleteします。

mysql> DELIMITER $$
mysql>CREATE EVENT IF NOT EXISTS `sweeper_event` ON SCHEDULE EVERY 10 MINUTE STARTS '2012-02-15 15:31:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DELETE FROM target_tbl WHERE modified < (now() - INTERVAL 20 MINUTE); END$$
mysql>DELIMITER ;


START '時間' の部分をとっぱらうと、作成時間がSTART時間になるようです。


0 件のコメント:

コメントを投稿