设为首页 收藏本站
查看: 201|回复: 0

[经验分享] MySQL 定时删除数据

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-19 09:16:03 | 显示全部楼层 |阅读模式
存储过程:
1. MySQL 5.0 以后开始支持存储过程。
2. 我们常用的SQL语句在执行的时候需要先编译,然后执行,而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中(因而执行速度比较快),用户通过制定存错过程的名字并给定参数来调用执行它。

Event事件:
1. MySQL 5.1以后开始引入event概念;

2. event 即“时间触发器”,通过在特定时间触发SQL语句或者存储过程执行。




MySQL 定时删除数据实现方法:mysql存储过程 + event事件

1. 写存储过程

DELIMITER //
create procedure del_data(IN `date_inter` int) //创建存储过程, IN表示需要传入一个参数
begin
        delete from EPISODE_CCM_GENERAL_INFO where time < date_sub(curdate(), interval date_inter day);
        delete from EPISODE_CEM_GENERAL_INFO where time < date_sub(curdate(),interval date_inter day);
end //
DELIMITER ;
格式注意:
a. 这里的DELIMITER // :
DELIMITER是关键字,这句的作用是声明分隔符为//,由于MySQL默认以“;”为分隔符,如果没有声明新的分隔符,编译器会把存储过程当做SQL语句进行处理,存储过程的编译过程就会报错。所以事先声明当前段的分隔符是'//', 存储过程不会执行这些代码。DELIMITER ; 是将分隔符还原。
b. IN 输入参数,OUT输出参数,INOUT表示输入输出参数
c. 存储过程体的开始与结束用begin,end来标识;
d. curdate()返回当前的日期,e.g. 2015-06-18
    curtime()返回当前时间,e.g. 14:12:09
    now() 返回当前日期和时间,e.g. 2015-06-18 14:12:09
    date_sub()函数,从日期减去指定的时间间隔;
e. 查看存储过程命令:show procedure status where db = "dbname";
f. 删除存储过程命令:drop procedure;
g. delete语句表示删除date_inter天前的数据。


2. 写event事件

create event del_event  
on schedule
EVERY 1 day  
STARTS '2015-05-11 13:00:00'  
ON COMPLETION  PRESERVE ENABLE  
do  call del_data(90)


a. 查看是否开启event:
    show variables like "event_scheduler";
b. 开启event: (1: on 0 :off)
    set global event_scheduler = 1;

c. on schedule 计划任务,有两种方式:
    i). at 时间戳,用来完成单次的计划任务;

    ii). every 时间,用来完成重复的计划任务;时间可以使用:year, month, day, hour, minute,seconds等。
d. on completion [not] preserve
    on completion 表示当这个事件不会再发生的时候,preserve表示事件执行完毕后不会被drop掉。

    enable /disable表示开启/关闭事件。

    可以通过alter event event_name enable/disable更改事件的开启或关闭;

e. call del_data是调用存储过程;
f. show events 查看事件;













运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-78721-1-1.html 上篇帖子: 转义字符:html、mysql、postgresql、json、php 下篇帖子: [原创]VS2013 EF6连接MySql需要几步?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表