2019独角兽企业重金招聘Python工程师标准>>>

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

MySQL 定时任务event相关推荐

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

    <span style="font-family: 'Microsoft YaHei'; font-size: 14px;">MySQL定时任务event</sp ...

  2. MySQL 定时任务event 按天建表 并将前一天数据导入新建的表中并删除总表数据 实现分表功能

    需求:实现日志系统保存日志信息到数据库,由于日志信息量巨大,需要每天一张表来管理数据. 思路:总表不能改变,因为代码中SQL语句已经写死,表名不能改变;因此我们每天定时将总表数据导入到新表中,并将总表 ...

  3. mysql event使用,用MySQL的Event设置定时任务执行sql语句 | 老疯子

    想在每天某个特定时间段定时执行一条sql语句命令,来进行数据库的备份或者更新删除等,可以直接使用MySQL自带的定时任务Event事件来执行操作.需要注意的是Event事件是在MySQL 5.1版本中 ...

  4. mysql定时任务的实现

    1,需求:每天晚上10点到早上5点,每10分钟定时执行存储过程. 2,实现方式:实现方式有两种: 一种是比较常规的,用mysql的event定时任务,先介绍一下mysql中event定时任务的相关命令 ...

  5. navicat创建MySql定时任务详解

    目录 navicat创建MySql 定时任务详解 一.开起定时任务 二.通过navicat创建定时任务 三.关闭.启动.别名.移动.删除event 四.查询Event信息 navicat创建MySql ...

  6. mysql定时任务 每日执行存储过程

    原文链接:mysql定时任务 每日执行存储过程 1.操作工具Navicat数据库操作工具. 2.创建一个存储过程 例如:delete From apply_setdtl where DATE(crea ...

  7. navicat创建mysql定时任务_navicat创建MySql定时任务的方法详解

    navicat创建MySql 定时任务详解 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的" ...

  8. linux设置mysql定时任务_Linux下如何实现Mysql定时任务

    假设前提:每天晚上10点到早上5点,每10分钟定时执行存储过程. 实现方式: 第一种是利用mysql本身实现,制定event定时任务,可以借助navicat for mysql或其他数据库开发工具去做 ...

  9. mysql定时任务,每天定时执行

    最近在公司需要做一个mysql每天定时执行存储过程,完成后记录一下,以便日后查阅. 这里我们实现一个定时任务,每天凌晨1点执行一个存储过程,向用户表插入一条记录. 首先查看mysql数据库是否开启了事 ...

  10. ​​Navicat设定mysql定时任务!

    ​​Navicat设定mysql定时任务! 需求:每天将一张表的前一天的数据抽取到另一张表中,使用Mysql数据库的客户端Navicat配置 第一步,创建过程cust_report,直接在查询窗口中执 ...

最新文章

  1. 【总结整理】JS的继承
  2. excel如何分类汇总_Excel教程:一个排序后分类汇总他弄了一天 Excel神技能!
  3. Wireshark网络抓包实践
  4. H3C SecPath防火墙GRE+IPSEC+OSPF典型配置举例
  5. 类实现Java模板方法模式中的HookMethod实现
  6. linux中iptable中端口,Linux如何打开iptables中的端口
  7. python画六角图_六角图的画法
  8. Linux 命令(76)—— kill 命令
  9. c语言模拟计算机程序阶乘,辽宁省计算机二级(C语言)模拟试卷B(无答案).doc
  10. 产品读书《浪潮之巅》
  11. Delphi另一个多线程函数:BeginThread用法
  12. python 中 websocket实现消息定时推送
  13. fastlane php,Fastlane自动化打包笔记
  14. 进行分词时,报错omw-1.4安装包未找到?
  15. mysql var和varp的区别_了解T-SQL stdev、stdevp、var和varp
  16. arp攻击----arpspoof
  17. python使用scrapy爬虫总是提示ModuleNotFoundError: No module named ‘‘
  18. 问1:蜂鸣器中三极管的接法及作用
  19. node入门(三)npm包
  20. MySQL双机热备份实施方案

热门文章

  1. HDU-ZZY的爱好
  2. 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication'
  3. Delphi的命令行编译命令
  4. configparser ,shelve ,hashlib,random模块
  5. Hark的数据结构与算法练习之梳排序
  6. read和write函数
  7. spring管理bean容器(笔记)[继]
  8. IntelliJ IDEA使用技巧(二)——添加jar包
  9. 25个jQuery的编程小抄
  10. Unity Lighting - Choosing a Color Space 选择色彩空间(四)