MySQL job/定时任务/event 学习

参考文章:
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.

原文地址:https://www.cnblogs.com/xcsn/p/11917060.html

时间: 2024-10-07 15:48:33

MySQL job/定时任务/event 学习的相关文章

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

MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据) 分类: MySql5.x2014-06-23 15:16 1266人阅读 评论(0) 收藏 举报 mysql数据库 [sql] view plaincopy <span style="font-family: 'Microsoft YaHei'; font-size: 14px;">MySQL定时任务event</span> 由于一些业务需求,我们可能需要定时清除数据库一些废弃的数据

MySQL创建定时任务

一.前言 自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作.更值得 一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精 确到每分钟执行一次.对于一些对数据实时性要求比较高的应用(例如:股票.赔率.比分等)就非常适合. 事件调度器有时也可称

如何写mysql的定时任务

什么是事件: 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行: 查看是否开启: show variables like 'event_scheduler'; 如果显示OFF,则输入以下语句开启: set global event_scheduler = on; 提醒:虽然这里用set global event_scheduler = on语句开启了事件,但是每次重启电脑.或重启mysql服务后,会发现,事件自动关

Mysql 存储过程+定时任务,完成分区自动维护

建表: drop table if exists terminal_parameter; CREATE TABLE `terminal_parameter` ( `terminal_parameter_id` int(11) NOT NULL AUTO_INCREMENT, .................... `createtime` datetime NOT NULL, `userid` int(8) NOT NULL, `terminal_id` int(8) DEFAULT NULL

[DB] - Mysql创建定时任务

mysql支持定时任务的创建,要求mysql服务器开始定时任务调度. 1. 查看是否开启定时任务执行 SHOW VARIABLES LIKE 'event_scheduler'; // OFF表示没有开启2. 开启定时任务 SET GLOBAL event_scheduler = ON; 或者 my.cnf文件中添加event_scheduler = 1 3. 编写定时任务 语法规则: CREATE EVENT [IF NOT EXISTS] event_name  // 指定名称 ON SCH

MySQL存储过程定时任务

一.基本概念 mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程. 二.适用范围 对于每隔一段时间就有固定需求的操作,如创建表,删除数据等操作,可以使用event来处理.例如:使用event在每月的1日凌晨1点自动创建下个月需要使用的三张表. 三.使用权限 单独使用event调用SQL语句时,查看和

MySql基本语法(学习笔记)

MySQL语法大全_自己整理的学习笔记 select * from emp;  #注释 #--------------------------- #----命令行连接MySql--------- #启动mysql服务器 net start mysql #关闭 net stop mysql #进入 mysql -h 主机地址 -u 用户名 -p 用户密码 #退出 exit #--------------------------- #----MySql用户管理--------- #修改密码:首先在D

mysql 5.0存储过程学习总结

mysql存储过程的创建,删除,调用及其他常用命令 本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)  mysql 5.0存储过程学习总结 一.创建存储过程 1.基本语法: create procedure sp_name()begin………end 2.参数传递 二.调用存储过程 1.基本语法:call sp_name()注意:存储过程名称后面必

MySQL show binglog event in &#39;log_name&#39;

二进制日志文件记录的内容:记录表的更改. 二进制日志文件记录的形式:基于语句的复制.基于行的复制. 两种记录形式的优点与不足: 基于语句的复制-->它不能保证复制的正确性.如随机函数可能在两台机子上执行的结果是不一样的. 基于行的复制   -->它可以保证复制的正确性.但是问题是它可能要更多的网络流量.因为它要把整行数据都复制过去. 查看二进制日志都记录了一些什么的方法: show binlog events in 'log_name';在不指定log_name的情况下会默认为第一个二进制日志