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


     

    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;  
  • 相关阅读:
    se 键盘鼠标操作事件
    警告框操作方法(alert弹窗)
    se自带截图方法
    CSS Selector 高级用法
    吃奶酪
    互不侵犯
    hdu1102
    P4744 Iron man
    玉米田
    状压dp题单
  • 原文地址:https://www.cnblogs.com/u0mo5/p/4453337.html
Copyright © 2020-2023  润新知