开发者社区> thinkyoung> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)

简介:   MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据) 分类: MySql5.x2014-06-23 15:16 1266人阅读 评论(0) 收藏 举报 mysql数据库 [sql] view plaincopy   MySQL定时任务event   由于一些业务需求,我们可能需要定时清除数据库一些废弃的数据,可以使用mysql的存储过程和事件来完成。
+关注继续查看
 

MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)

分类: MySql5.x
[sql] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <span style="font-family: 'Microsoft YaHei'; font-size: 14px;">MySQL定时任务event</span>  
由于一些业务需求,我们可能需要定时清除数据库一些废弃的数据,可以使用mysql的存储过程和事件来完成。
下面例子定时清除日志表tbl_base_count中指定天数前的数据
1.创建日志表tbl_base_count:
[sql] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. CREATE TABLE `tbl_base_count` (  
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  3.   `CAPTCHA` varchar(12) COLLATE utf8_bin NOT NULL,  
  4.   `PHONE` varchar(12) COLLATE utf8_bin NOT NULL,  
  5.   `SENDTIME` varchar(32) COLLATE utf8_bin NOT NULL,  
  6.   PRIMARY KEY (`id`)  
  7. ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;  

2.创建事件e_del_tbl_base_count:
[sql] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. CREATE EVENT `e_del_tbl_base_count`   
  2. ON SCHEDULE EVERY 1 DAY STARTS '2013-06-23 17:33:43'   
  3. ON COMPLETION NOT PRESERVE ENABLE DO CALL p_del_count (90);  
上面代码表示从2013-07-30 17:33:43起每一天执行一次p_del_count这个存储过程,并带上参数
 
3.创建存储过程:
[sql] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. p_del_count   
  2. DELIMITER $$  
  3.   
  4. --  
  5. -- 存储过程  
  6. --  
  7. CREATE PROCEDURE `p_del_count`(IN `date_inter` INT)  
  8. BEGIN  
  9.     DELETE FROM LOG WHERE (TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(<span style="font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;">SENDTIME</span>)))>=date_inter;  
  10. END$$  
  11. DELIMITER ;  
按事件传过来的参数90,删除操作时间90天之前的数据
这样mysql就会定制每天去执行这个任务了。
 
4.(一)查看当前是否已开启事件计划(调度器)有3种方法:
[sql] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. SHOW VARIABLES LIKE 'event_scheduler';  
  2.  SELECT @@event_scheduler;  
  3.  SHOW PROCESSLIST;  
5.(二)开启事件计划(调度器)开关有4种方法:
[sql] view plaincopy在CODE上查看代码片派生到我的代码片
 
  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表示关闭;

6.(三)事件开启与关闭:
[sql] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. 开启某事件:ALTER EVENT e_del_logs ON COMPLETION PRESERVE ENABLE;  
  2. 关闭某事件:ALTER EVENT e_del_logs ON COMPLETION PRESERVE DISABLE;  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
记一次MySQL数据库拒绝访问的解决过程
记一次MySQL数据库拒绝访问的解决过程 最近在折腾wordpress博客,连接MySQL数据库时提示拒绝访问。经过排查,解决了问题。这里记录下解决问题的方案,以及解决的思路。如有遇到类似问题的读者可以参考下。
3705 0
MySQL之在储存过程中使用表名为变量
  我们知道,在MySQL的储存过程中,一般的输入参数为各种数据类型,如数值型,字符型等。那么,能不能让输入参数等于表名呢?答案是肯定的,那就是使用MySQL提供的PREPARE语法。
1024 0
记载一次删除mysql的默认数据库mysql的过程
概述 今天终于尝到了什么叫删库跑路,妈的真的悲剧,早上想在树莓派里安装个wordpress,想放点街舞视频给大家分享一下,突然发现数据库里面还有一个以前的论坛数据库,我想删了把,反正没用,所以drop database mysql 开始我还没用发现,突然想到,wo...
1435 0
.NET调用osql.exe执行sql脚本创建表和存储过程
文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/using System;using System.Diagnostics;using System.
743 0
+关注
722
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载