MySQL定时任务event_MySQL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL定时任务event_MySQL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1784字,纯文字阅读大概需要3分钟。
内容图文
![MySQL定时任务event_MySQL](/upload/InfoBanner/zyjiaocheng/575/254a50b82f554197b5f8d486213b0b88.jpg)
MySQL定时任务event
由于一些业务需求,我们可能需要定时清除数据库一些废弃的数据,可以使用mysql的存储过程和事件来完成。
下面例子定时清除日志表log中指定天数前的数据
1、创建日志表log
CREATE TABLE IF NOT EXISTS `log` ( `log_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id', `user_id` int(11) DEFAULT NULL COMMENT '用户id', `op` varchar(128) NOT NULL COMMENT '操作类型', `model` varchar(32) DEFAULT NULL COMMENT '操作模块', `activity_time` int(10) NOT NULL DEFAULT '0' COMMENT '操作时间', `data` text COMMENT '数据', PRIMARY KEY (`log_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户日志表' AUTO_INCREMENT=1 ;
2、创建事件e_del_logs
CREATE EVENT `e_del_logs` ON SCHEDULE EVERY 1 DAY STARTS '2013-07-30 17:33:43' ON COMPLETION NOT PRESERVE ENABLE DO call p_del_logs(90);
//上面代码表示从2013-07-30 17:33:43起每一天执行一次p_del_logs这个存储过程,并带上参数
3、建立存储过程
p_del_logsDELIMITER $$---- 存储过程--CREATE PROCEDURE `p_del_logs`(IN `date_inter` int)BEGIN delete from log where (to_days(now()) - to_days(FROM_UNIXTIME(activity_time)))>=date_inter;END$$DELIMITER ;
//按事件传过来的参数90,删除操作时间90天之前的数据
这样mysql就会定制每天去执行这个任务了。
查看当前是否已开启事件计划(调度器)有3种方法:
1) SHOW VARIABLES LIKE 'event_scheduler';2) SELECT @@event_scheduler;3) SHOW PROCESSLIST;
(二) 开启事件计划(调度器)开关有4种方法:
1) SET GLOBAL event_scheduler = 1;2) SET @@global.event_scheduler = 1;3) SET GLOBAL event_scheduler = ON;4) SET @@global.event_scheduler = ON;
键值1或者ON表示开启;0或者OFF表示关闭;
(三) 事件开启与关闭:
开启某事件:ALTER EVENT e_del_logs ON COMPLETION PRESERVE ENABLE;关闭某事件:ALTER EVENT e_del_logs ON COMPLETION PRESERVE DISABLE;
bitsCN.com
内容总结
以上是互联网集市为您收集整理的MySQL定时任务event_MySQL全部内容,希望文章能够帮你解决MySQL定时任务event_MySQL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。