mysql中定时任务_mysql中定时任务的用法

1.什么是事件

一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行;

mqsql的事件类似于linux的定时任务,不过是完全在mqsql内部实现的。

事件是在一个独立的事件调度线程中被初始化,这个事件调度线程和处理链接的线程没有任何关系。并且该线程在事件执行结束后,会自动销毁。

2.开启事件

查看是否开启:

show variables like 'event_scheduler';

e5be6b01f2b38dd5d50fc558caf5e206.png

如果显示OFF,则输入以下语句开启:

set global event_scheduler = on;

查看事件:

通过show events;可以查看创建的事件

3.创建自定义事件

首先创建一张测试表。

create table test_table

(

id int auto_increment primary key,

create_time datetime default CURRENT_TIMESTAMP null

)

comment '用来测试的表'

;

3.1 语法

CREATE EVENT [IFNOT EXISTS] event_name

ONSCHEDULE schedule

[ONCOMPLETION [NOT] PRESERVE]

[ENABLE | DISABLE]

[COMMENT ``'comment'``]

DO sql_statement;

解释:

event_name:自己取的事件名

schedule:触发的时间周期。写法为:

AT TIMESTAMP [+ INTERVAL INTERVAL]

或 EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

AT + 时间戳,用来完成单次的计划任务

EVERY 时间(单位)的数量实践单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务。

其中 INTERVAL 的取值又有每年/每月等等:

{YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |

DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

很多,但是常用的YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。剩下的不标准的不建议使用。

ON COMPLETION参数

表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后阻止该事件被Drop掉。所以,对于特定时间执行的事件,如果保持默认,执行完毕后,事件将被删除,不想删除的话要设置成ON COMPLETION PRESERVE。对于重复性时间,如果设置了ON COMPLETION NOT PRESERVE,那么也是只会在执行一次后停止并删除事件。

[ENABLE | DISABLE] 可以设置该事件创建后状态是否开启或关闭,默认为ENABLE。

[COMMENT ‘comment’]可以给该事件加上注释。

3.2 例子

3.2.1 每隔10秒插入一条记录

CREATE EVENT e_test_insert

ON SCHEDULE EVERY 10 SECOND

DO insert INTO test_table (create_time) VALUES (current_timestamp)

可以通过show events;查看刚创建的事件

cfad763771605c5bb8aedd013c3086f4.png

查看test_table

082054df9b56879780dc9b04802d0960.png

3.2.2 在特定时间执行一次

CREATE EVENT e_test_insert_at

ON SCHEDULE AT TIMESTAMP '2020-05-28 11:00:00'

DO insert INTO test_table (create_time) VALUES (current_timestamp)

f8b4bbaec8aa061321fd705d074c4507.png

到时间后,查看test_table

9dbe98c4a5318c40b338430a252fe811.png

确实执行了。再查看一下事件

00bded591e86b27b10e7a4499b109489.png

被删除了。验证了前面的ON COMPLETION参数

3.2.3 在指定延时后执行一次

CREATE EVENT e_test_insert_at

ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 50 SECOND

ONCOMPLETION PRESERVE

DO insert INTO test_table (create_time) VALUES (current_timestamp)

50秒后执行一次,并且不要完成后不要删除任务。

5a7827fa922b62cba95825237b3a9fc9.png

并且执行完成后,没有被删除

3.2.4 5分钟后开始,每10秒插入一次

CREATE EVENT e_test_insert

ON SCHEDULE EVERY 10 SECOND

STARTS CURRENT_TIMESTAMP+INTERVAL 5 MINUTE

DO insert INTO test_table (create_time) VALUES (current_timestamp)

Starts关键字,可以指定在什么时候开始

2ea651cc52481b08aaf910c1d0e5b08b.png

3.2.5 指定时间后结束

CREATE EVENT e_test_insert

ON SCHEDULE EVERY 10 SECOND

STARTS CURRENT_TIMESTAMP+INTERVAL 1 MINUTE

ENDS CURRENT_TIMESTAMP+INTERVAL 2 MINUTE

DO insert INTO test_table (create_time) VALUES (current_timestamp);

在当前1分钟后开始,在当前2分钟后结束。所以,只会执行1分钟。

4a28d711eace1bf0d87b728281bb2fa7.png

3.2.6 每天的定时执行

CREATE EVENT e_test_insert_day

ON SCHEDULE EVERY 1 DAY

STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)

DO insert INTO test_table (create_time) VALUES (current_timestamp);

每天1点执行一次。DATE_ADD是MySQL得内置函数,对某个时间加上指定时间。

3.2.7 每个月的29号0点30分执行一次

CREATE EVENT e_test_insert_month

ON SCHEDULE EVERY 1 MONTH

STARTS DATE_ADD(DATE_ADD('2020-04-29', INTERVAL 1 MONTH), INTERVAL 30 MINUTE)

DO insert INTO test_table (create_time) VALUES (current_timestamp);

3.2.8 每小时的30分时执行一次

CREATE EVENT e_test_insert_hour

ON SCHEDULE EVERY 1 HOUR

STARTS DATE_ADD('2020-05-28 13:30:00', INTERVAL 1 HOUR)

DO insert INTO test_table (create_time) VALUES (current_timestamp);

4,删除事件

语法:

DROP EVENT [IF EXISTS] event_name

如果事件不存在,会报错。所以执行时,最好加上IF EXISTS

5, 修改事件

语法:

ALTER EVENT event_name

[ON SCHEDULE schedule]

[RENAME TO new_event_name]

[ON COMPLETION [NOT] PRESERVE]

[COMMENT ``'comment'``]

[ENABLE | DISABLE]

[DO sql_statement]

5.1 临时关闭事件

ALTER EVENT e_test DISABLE;

5.2 开启事件

ALTER EVENT e_test ENABLE;

5.3 将每天清空test表改为5天清空一次:

ALTER EVENT e_test ON SCHEDULE EVERY 5 DAY;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文看懂 | 内存交换机制

本文基于 Linux-2.4.16 内核版本由于计算机的物理内存是有限的, 而进程对内存的使用是不确定的, 所以物理内存总有用完的可能性. 那么当系统的物理内存不足时, Linux内核使用什么方案来避免申请不到物理内存这个问题呢?相对于内存来说, 磁盘的容量是非常大的, 所以Linux内核实…

无论是cisco还是华三的书上对于子网划分有个问题需要解释

无论是cisco还是华三的书上对于子网划分有个问题,例如:如果子网为有五位 ,则可以划分为30个子网。在实际中却不是这样的 子网位五位,可以划分为32个子网。那为什么这么写,难道是出书的人写错了,其实不是。这…

mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试

online DDL的前身是 innodb fast index creation(5.1和5.5), 5.6里对这个功能做了扩展:很多alter table的操作绕开了 table copying,支持DML并发操作。一、online ddl的支持测试:1、主键的增删主键添加:支持online ddl&#xff0c…

Stupid cat Doge (分形图)

【题目描述】 【题目链接】 http://noi.openjudge.cn/ch0204/8463/ 【算法】 为求等级N下的点的坐标可由几何关系找到其与等级N-1下对应点的关系&#xff0c;然后递归直至所有点的祖先&#xff08;等级0&#xff09;即可计算出坐标。 【代码】 1 #include <bits/stdc.h>2…

电赛时,如何快速搭建电路?

大家好&#xff0c;我是张巧龙&#xff0c;电赛只有四天三夜&#xff0c;电路方案可能需要多次验证&#xff0c;有的同学选择直接洞洞板焊接&#xff0c;自行跳线。有些同学可能会选择雕刻机雕刻。我带的学生一般会使用传统工艺-腐蚀法&#xff0c;这种方法的优点&#xff0c;成…

Javaweb经典三层架构的演变

1.Javaweb经历了三个时期 ①JSP Model1第一代 JSP Model1是JavaWeb早期的模型&#xff0c;它适合小型Web项目&#xff0c;开发成本低&#xff01;Model1第一代时期&#xff0c;服务器端只有JSP页面&#xff0c;所有的操作都在JSP页面中&#xff0c;连访问数据库的API也在JSP页面…

我决定去读研了

读书这个事情&#xff0c;我一直都是比较推荐大家去做的&#xff0c;今天有一位同学找到我&#xff0c;问我现在哪个行业比较赚钱&#xff0c;自己马上要毕业了&#xff0c;想马上大显身手一下。然后我问他&#xff0c;你有没有赚钱的压力&#xff0c;还有自己目前的学习成绩怎…

win2008 php mysql zend phpmyadmin_Windows2008 最新版Apache2.PHP5.MySQL6.PHPMyadmin.ZendOptimizer安装图解...

首先到PHPCHINA的网站www.phpchina.com下载最新的正式版本Apache 2.2.8地址&#xff1a;http://apache.mirror.phpchina.com/httpd/httpd-2.2.8-win32-src.zipPHP-5.2.5地址&#xff1a;http://cn.php.net/get/php-5.2.5-Win32.zip/from/this/mirrorMySQL-6.0.3-alpha-win32地址…

WPF 开源项目 【watcher】 守望者,一款监控,统计,分析你每天在自己电脑上究竟干了什么的软件...

时隔多年&#xff08;两年&#xff09;&#xff0c;天天沉迷写PHP的我在连续加薪了逐渐发现自己不怎么写代码了。 甚至有一天我发现我连IDE 都没有打开&#xff0c;实在是太堕落了 为了及时悬崖勒马&#xff0c;回头是岸。为了鼓励自己专心写代码&#xff0c;我决定写一款监控自…

Java iText PDF:用 iText 包生成简单的 pdf 文件

有点兴趣想要看看 Java 怎么生成 PDF 文件&#xff0c;搜索了一下&#xff0c;据说 iText 包比较好&#xff0c;到 这里下载 iText.jar 包&#xff0c;顺便把源代码、文档都一起下载了吧。但是&#xff0c;仅仅有这么一些材料想要写代码生成 pdf 文件还是比较困难的&#xff0c…

java互换_两个变量交换的四种方法(Java)

对于两种变量的交换,我发现四种方法,下面我用Java来演示一下。 1.利用第三个变量交换数值,简单的方法。 (代码演示一下) 1 class TestEV 2 //创建一个类 3 {4 public static void main(String[]args) 5 {6 int x =5,y=10; //定义两个变量 7 8 int temp = x;    //定义第…

搞技术的,越老越吃香?越老越值钱?

在我的整个职业生涯中&#xff0c;我目睹了很多才华横溢的工程师经过一段不太愉快的短期任职后离开了公司。曾经我也有这样的经历&#xff1a;在一家公司任职不到两年&#xff0c;就跳槽到了另一家&#xff0c;担任工程副总裁。撇开我的例子不谈&#xff0c;我认为出现这种现象…

ubuntu 修改host,以便在本地调试

sudo gedit /etc/hosts这样已经可以即可生效了&#xff0c;另外再改一下nginx.confserver_name localhost www.15-1688.com;

对存储还搞不清楚,先看看这篇文章-从51单片机上去理解存储器

存储器是许多存储单元的集合&#xff0c;存储器单元实际上是时序逻辑电路&#xff08;锁存器&#xff09;的一种&#xff0c;按单元号顺序排列。每个单元由若干二进制位构成&#xff0c;以表示存储单元中存放的数值&#xff0c;这种结构和数组的结构非常相似。按存储器的使用类…

继续泼冷水 Ubuntu决定放弃支持安腾

在今年早些时候微软宣布下一代windows server操作系统不再支持英特尔安腾架构&#xff0c;给本就前途堪忧的安腾泼了一盆冷水。如今Ubuntu&#xff08;重要的一款以桌面应用为主的Linux操作系统&#xff09;也决定不再支持英特尔安腾架构。而另一方面&#xff0c;安腾在硬件厂商…

给不起钱的大公司,算不上大公司

这是昨天给一位同学聊职业规划中说的一句话。这位同学在每次做选择前都会跟我聊下&#xff0c;感觉职业规划咨询跟卖菜差不多&#xff0c;那些觉得我的建议不错的同学&#xff0c;总是会在一年两年后继续找我&#xff0c;挺好的&#xff0c;喜欢跟大家一起沟通吹水并一起成长的…

粉丝回馈,8000元大礼包免费相送

9月开学季&#xff0c;福利送不停&#xff0c;果哥又给大家送福利了&#xff0c;价值8000元豪礼相送&#xff01;一、 前言非常感谢大家对我公众号的支持&#xff0c;暑假也结束了。这次邀请了3个不错的公众号朋友&#xff0c;同时也是电子嵌入式领域的优质公众号&#xff0c;一…

[Drupal] How to get the real path of a node, no matter it is a path or a url alias

Just test the code as below: 代码 $urisubstr(request_uri(),1,strlen(request_uri()));$uri_arrayarray();if(!($pathdrupal_lookup_path(source,$uri))) {$uri_arrayexplode(/,$uri); }else{$uri_arrayexplode(/,$path); }var_dump($uri_array);Have fun!

图文讲解5G调制,特别通俗易懂!

大家好&#xff0c;今天我们来聊聊调制。说到调制&#xff0c;我想很多同学马上会联想到这些关键词&#xff1a;BPSK、QPSK、调幅、调相、QAM、星座图……众所周知&#xff0c;调制和解调是通信基本业务流程中的重要组成部分。没有它们&#xff0c;我们的移动通信根本无法实现。…

2018 Multi-University Training Contest 3

好像克拉丽丝小姐姐题解写的超详细我都没啥好说的了 Problem A. Ascending Rating 仔细一看m是固定的单调DQ就好了 1 #include <bits/stdc.h>2 using namespace std;3 typedef long long LL;4 const int maxn 1e7 10;5 int st, ed, deq[maxn];6 int a[maxn];7 8 inline…