栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mysql中事件和定时任务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysql中事件和定时任务

一、简介

事件(event)是MySQL在相应的时刻调用的过程式数据库对象。是MYSQL一个工具,一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。

二、创建语法

  CREATE 
    [DEFINER = { user | CURRENT_USER }] 
    EVENT 
    [IF NOT EXISTS] 
    event_name 
    ON SCHEDULE schedule 
    [ON COMPLETION [NOT] PRESERVE] 
    [ENABLE | DISABLE | DISABLE ON SLAVE] 
    [COMMENT 'comment'] 
    DO event_body; 
    
  schedule: 
    AT timestamp [+ INTERVAL interval] ... 
   | EVERY interval 
    [STARTS timestamp [+ INTERVAL interval] ...] 
    [ENDS timestamp [+ INTERVAL interval] ...] 
    
  interval: 
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | 
         WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | 
         DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

 名词解释

event_name :创建的event名字(唯一确定的)。
ON SCHEDULE:计划任务。
schedule: 决定event的执行时间和频率(注意时间一定要是将来的时间,过去的时间会出错),有两种形式 AT和EVERY。
[ON COMPLETION [NOT] PRESERVE]: 可选项,默认是ON COMPLETION NOT PRESERVE 即计划任务执行完毕后自动drop该事件;ON COMPLETION PRESERVE则不会drop掉。
[COMMENT 'comment'] :可选项,comment 用来描述event;相当注释,最大长度64个字节。
[ENABLE | DISABLE] :设定event的状态,默认ENABLE:表示系统尝试执行这个事件, DISABLE:关闭该事情,可以用alter修改
DO event_body: 需要执行的sql语句(可以是复合语句)。CREATE EVENT在存储过程中使用时合法的。

三、开启关闭事件调度器

1、查看是否开启

show variables like '%event_scheduler%';

默认是off,未开启

2、开启事件调度器

SET GLOBAL event_scheduler = ON; 
SET @@global.event_scheduler = ON; 
SET GLOBAL event_scheduler = 1; 
SET @@global.event_scheduler = 1;

或者通过配置文件 my.cnf

event_scheduler = 1 #或者ON

查看调度器线程:

show processlist; 

3、关闭事件调度器

SET GLOBAL event_scheduler = OFF; 
SET @@global.event_scheduler = OFF; 
SET GLOBAL event_scheduler = 0; 
SET @@global.event_scheduler = 0;

4、查看调度器线程任务

SELECT @@event_scheduler;
SHOW PROCESSLIST;
show events; #查看当前schemal 调度任务
select * from mysql.event;#查看整个数据库 调度任务

四、创建测试表

1、简单省略

2、创建事件1(立即启动事件)

create event event_now 
on schedule 
at now() 
do insert into events_list values('event_now', now());

3、创建事件2(每分钟启动事件)

create event test.event_minute 
on schedule 
every 1 minute 
do insert into events_list values('event_now', now());

4、创建事件3(每秒钟启动事件)

CREATE event event_now 
ON SCHEDULE 
EVERY 1 SECOND
DO INSERT INTO event_test VALUES(1);

5、创建事件4(每秒钟调用存储过程)

CREATE DEFINER=`root`@`localhost` EVENT `eventUpdateStatus` 
ON SCHEDULE EVERY 1 SECOND
STARTS '2017-11-21 00:12:44'
ON COMPLETION PRESERVE 
ENABLE 
DO call updateStatus()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号