参考文章:

https://blog.csdn.net/qq_21108311/article/details/82589850

https://blog.csdn.net/qq_27238185/article/details/56271877

https://blog.csdn.net/lxpbs8851/article/details/8019965

概要简述

原文链接:https://blog.csdn.net/qq_21108311/article/details/82589850

MySQL的定时任务(简称job)是可以通过MySQL自身实现的,相比较系统的计划任务,MySQL自身job可以实现秒级定位,即可以精确到秒单位进行任务的执行(系统计划任务一般是分钟);所以MySQL的job在要求精确化的任务上有极大的优势;MySQL 的job官方称为event,MySQL EVENT的原理和触发器非常的相似,区别在于,MySQL的event是系统定时驱动执行,而触发器是通过需求触发进行执行的,两者各有优势。

MySQL event和触发器一样可以调用存储过程,然而存储过程不能调用event,event只能系统执行,对于执行需求变更,我们只能手动的去调整event。

创建语法

--------创建语法
CREATE
[DEFINER = { user | CURRENT_USER }] --一般不写
EVENT --event标识
[IF NOT EXISTS] --如果没有就新建,建议不写这一行,确保每个event独立不冲突
event_name -- 取个event名字
ON SCHEDULE --计划任务标识
schedule --计划任务时间,有两个参数(at 和 every),at代表当前一次,every表示每过多少时间执行一次
[ON COMPLETION [NOT] PRESERVE] --可以不写,默认是ON COMPLETION NOT PRESERVE 即计划任务执行完毕后自动drop该事件;ON COMPLETION PRESERVE则不会drop
[ENABLE | DISABLE | DISABLE ON SLAVE] --可以不写,默认状态,默认是启用状态,可以指定为新建关闭状态
[COMMENT 'comment'] --注释event,可以不写
DO --执行语句标识
event_body; --执行的sql --------------------------------------------计划任务可以定义的时间方式:
schedule:
AT timestamp [+ INTERVAL interval] ... --at方式
| EVERY interval --every方式
[STARTS timestamp [+ INTERVAL interval] ...] --在at/every后可以指定什么时候开始
[ENDS timestamp [+ INTERVAL interval] ...] --指定什么时候结束 -------------------------------------------MySQL官方提供的时间字符,可以参考
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

步骤流程

在创建job之前,需要做以下几件事:

1、确保系统的event事件开关是打开的,允许我们创建event;

2、确保我们创建后是在成功运行的,所以要会查看当前系统有的event

3、确保我们创建是按照需求来的,如果需要更改,我们要会更改event

查看当前系统有的event

-- 查看系统有哪些event事件
--方法一
select * from mysql.event; --方法二
SELECT * FROM information_schema.events;

查看系统开关

-- 方法一
select @@event_scheduler; --方法二
show variables like 'event_scheduler';

设置自动启动

如果value是off或者是0;代表没有开启,我们可以手动开启:

### 开启event事件:
-- 方法1
set GLOBAL event_scheduler=ON;
-- 方法2
set GLOBAL event_scheduler=1;

重启后自动启动

设置mysql重启后,job能自动启动

编辑/etc/my.cnf文件,在[mysqld]下添加event_scheduler=1

mysql server重启之后 也会将 global event_scheduler 设置为 on 要是没有 重启之后 就是off.

最新文章

  1. Chrome 开发者工具(DevTools)中所有快捷方式列表
  2. 【转】【MySql】MySql优化要点
  3. likely && unlikely in GCC
  4. easyui textarea回车导致datagrid 数据无法展示的问题
  5. AngularJS学习---Routing(路由) & Multiple Views(多个视图) step 7
  6. 使用IBatisNet的网站,修改database.config无效的问题解决
  7. puppet&mcollective客户端安装
  8. 多线程之线程池Executor应用
  9. UIImageView 的contentMode属性 浅析
  10. Java中使用LocalDate根据日期来计算年龄
  11. WEB学习笔记12-高可读性的HTML之如何正确设计表单
  12. Perl面向对象(2):对象
  13. js--随机产生100个从0 ~ 1000之间不重复的整数(me)
  14. Arduino IDE for ESP8266教程(二) 创建WIFI AP模式
  15. 【Selenium-WebDriver自学】Selenium-IDE调试(四)
  16. springboot测试service层的单元测试
  17. 【Android实验】UI设计-Android计算器
  18. PCAP文件格式分析(做抓包软件之必备)
  19. 静默调用ShellContextMenu 实现QQ文件共享
  20. Mybatis的初步使用

热门文章

  1. vue-v-for
  2. X264-应用工程
  3. java多线程执行时主线程的等待
  4. Windows 2003 IIS6.0下配置ASP+MySQL+PHP+ISAPI_Rewrite+Zend+Xcache
  5. Shell脚本(2)
  6. 磁盘I/O 监控 iostat
  7. LearnOpenGL.PBR.理论
  8. git使用笔记(第一次)
  9. CentOS最小化安装后找不到ifconfig命令
  10. 201871010133-赵永军《面向对象程序设计(java)》第十二周学习总结