mysql 定期维护_MYSQL进阶学习笔记十七:MySQL定期维护!(视频序号:进阶_36)

知识点十八:MySQL定期维护(37)

一、Mysql的定时器

所谓的定时器,指的是在某个时间段去执行同样的代码。比如闹钟。每到指定的时间闹铃就会响。同样的,我们这个定时器,只要满足我们的一个定时条件,只要说我们每隔5秒,或者每隔1秒,

那么这里面每隔5秒,或者每隔1秒就是它的定时条件,只要满足这个定时条件,那么它就会去执行之前给它预定的这样一个执行代码。

二、Mysql设置定时器

mysql版本是从5.1开始才支持event的。如果你的版本低于5.1就先升级版本吧。查看版本的方法有很多:select version();

1. 查看是否开启evevt与开启evevt

MySQL evevt功能默认是关闭的,可以使用下面的语句来看evevt的状态,如果是OFF或者0,表示是关闭的。

show VARIABLES LIKE '%sche%';

开启evevt功能。

SET GLOBAL event_scheduler = 1;

关闭event功能:

SET GLOBAL event_scheduler = 0;

三、创建定时器

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 drop table if existseventtable;2 create tableeventtable(3 id INT NOT NULL AUTO_INCREMENT KEY,4 time datetime NOT NULL

5 )ENGINE=InnoDB DEFAULT CHARSET=utf8;6

7 drop PROCEDURE if existsp_event_insert;8 delimiter //

9 CREATE PROCEDUREp_event_insert()10 BEGIN

11 INSERT INTO eventtable(time) VALUES(now());12 END

13 //

14 delimiter ;

默认数据

1、创建事件test_event(其作用:每隔一秒自动调用一段sql语句)

drop event if existstest_event;createevent test_eventon schedule every 1secondoncompletion preserve disable

do call p_event_insert();

--注意:当为on completion preserve 的时候,当event到期了,event会被disable,但是该event还是会存在,

当为on completion not preserve的时候,当event到期的时候,该event会被自动删除掉。

2、开启事件test_event

alter event test_event on completion preserve enable;

3、关闭事件test_event

alter event test_event on completion preserve disable;

4、创建步骤总结:

1.现在我们要去创建一个定时器,在创建之前我们要创建这样一张表,就是定时的向这个数据库去插入一条记录,首先,选择数据库。

2.如果数据库存在这张表则删除这张表。

3.再创建这张表,这个存储过程主要是用来向这张表中去插入一条数据记录。

5.如果存在这个存储过程就删掉。

6.修改分隔符。

7.再创建这个存储过程。

8.创建好之后,把它的分隔符修改好。

9.这里面就是我们创建的存储过程,这个就是向我们的这个表中去插入一条数据记录,现在我们要创建一个定时器,这个定时器就是每隔1秒,或者每隔多少时间,

我们就去执行这个存储过程,在创建这个定时器之前,我们还是先考虑如果存在这个定时器的话我们就把它删掉。

10.创建这个定时器。

11.开启这个定时器。

12.过一段时间关闭定时器并查询结果。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 --总结创建步骤

2

3 --检查表中书否存在这张表,存在则删除

4 drop table if existseventtable;5

6 --创建这张表

7 create tableeventtable(8 id INT NOT NULL AUTO_INCREMENT KEY,9 time datetime NOT NULL

10 )ENGINE=InnoDB DEFAULT CHARSET=utf8;11

12 --检查数据库是否存在这个存储过程,存在则删除

13 drop PROCEDURE if existsp_event_insert;14

15 --修改分隔符

16 delimiter //

17

18 --创建存储过程

19 CREATE PROCEDUREp_event_insert()20 BEGIN

21 INSERT INTO eventtable(time) VALUES(now());22 END

23 //

24

25 --改回分隔符

26 delimiter ;27

28 --检查表中是否有定时器

29 drop event if existstest_event;30

31 --创建定时器

32 createevent test_event33 on schedule every 1second34 oncompletion preserve disable35 do call p_event_insert();36

37 --开启定时器

38 alter event test_event oncompletion preserve enable;39

40 --关闭定时器

41 alter event test_event on completion preserve disable;

创建定时器总结测试

四、定时器总结

我们这节主要讲解了对于mysql当中的定时维护,那么这个当中的定时维护主要运用了我们当中的定时器,我们的这个定时器它可以去执行一段固定的代码,

我们开启的这个命令就是通过全局变量来设置,把它的这个变量设置为1,相当于就是把它开启了,开启之后我们再去创建这个定时器,

创建这个定时器这个语法create event test_event后面加定时器的名字,

然后这里面就是固定的写法on schedule every 1 second这是需要执行的任务,这里是每隔1秒,

on completion preserve disable这段代码表示如果我现在把这个定时器停掉了,实际上可以下次再启用它,

do call test_proce();这个代表这个存储器需要执行的代码,这里面就是我们调的存储过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值