博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 定时任务event
阅读量:6955 次
发布时间:2019-06-27

本文共 1471 字,大约阅读时间需要 4 分钟。

hot3.png

由于一些业务需求,我们可能需要定时清除数据库一些废弃的数据,可以使用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_logs

DELIMITER $$
--
-- 存储过程
--
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;

转载于:https://my.oschina.net/u/1172935/blog/149036

你可能感兴趣的文章
impala 问题
查看>>
OCP 11G 052题库解析汇总链接
查看>>
职业规划
查看>>
【最小割】【Dinic】bzoj3275 Number
查看>>
RvmTranslator6.3 is released
查看>>
OpenCASCADE 麻花钻头造型实例分析
查看>>
[旧博客]酷狗百名榜爬虫开源
查看>>
函数名的应用,闭包,迭代器
查看>>
DNS: Intro & Basics
查看>>
常州day1p3
查看>>
训练记录
查看>>
20165306 Exp5 MSF基础应用
查看>>
字串乱序 PHP&JS
查看>>
[转] gdb的基本工作原理
查看>>
可视化iOS应用程序开发的6个Xcode小技巧
查看>>
button设置边宽和圆角
查看>>
jsp初学总结
查看>>
Spring MVC的视图解析器
查看>>
[09-07]点击按钮变跟页面展示内容
查看>>
Adreno GPU Profiler
查看>>