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;
三、创建定时器
1 drop table if exists eventtable;
2 create table eventtable(
3 id INT NOT NULL AUTO_INCREMENT KEY,
4 time datetime NOT NULL
5 )ENGINE=InnoDB DEFAULT CHARSET=utf8;
6
7 drop PROCEDURE if exists p_event_insert;
8 delimiter //
9 CREATE PROCEDURE p_event_insert()
10 BEGIN
11 INSERT INTO eventtable(time) VALUES(now());
12 END
13 //
14 delimiter ;
1、创建事件test_event(其作用:每隔一秒自动调用一段sql语句)
drop event if exists test_event;
create event test_event
on schedule every 1 second
on completion 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.过一段时间关闭定时器并查询结果。
1 --总结创建步骤 2 3 --检查表中书否存在这张表,存在则删除 4 drop table if exists eventtable; 5 6 --创建这张表 7 create table eventtable( 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 exists p_event_insert; 14 15 --修改分隔符 16 delimiter // 17 18 --创建存储过程 19 CREATE PROCEDURE p_event_insert() 20 BEGIN 21 INSERT INTO eventtable(time) VALUES(now()); 22 END 23 // 24 25 --改回分隔符 26 delimiter ; 27 28 --检查表中是否有定时器 29 drop event if exists test_event; 30 31 --创建定时器 32 create event test_event 33 on schedule every 1 second 34 on completion preserve disable 35 do call p_event_insert(); 36 37 --开启定时器 38 alter event test_event on completion preserve enable; 39 40 --关闭定时器 41 alter event test_event on completion preserve disable;
四、定时器总结