MySql 定时任务的使用
MySql 定时任务的使用
by:授客 QQ:1033553122
简介
自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。
操作:
1,开启event_scheduler计划。
法1:
新建查询,执行语句:set GLOBAL event_scheduler = 1;
法2:编辑my.cnf,进入mysql安装目录,找到my.cnf配置文件,在文件中添加event_scheduler = 1
示例(linux下)
builder:~# find / -name my.cnf
/mnt/mysql/my.cnf
builder:~# cd /mnt/mysql/
builder:/mnt/mysql# vi my.cnf
……
2,要查看当前是否已开启事件调度器
执行如下SQL:
法1,sql查询器中:show variables like 'event_scheduler';


法2,sql查询器中:select @@event_scheduler;


法3,show
processlist;


3,创建事件(create
event)
语法:
CREATE
EVENT [IFNOT EXISTS] event_name
ONSCHEDULE schedule
[ONCOMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
注:
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS
TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE
| DAY_SECOND | HOUR_MINUTE | OUR_SECOND |
MINUTE_SECOND}
[ENABLE
| DISABLE]:设置该事件创建后状态是否开启或关闭,默认为ENABLE。
[COMMENT
‘comment’]:可以给该事件加上注释。
4,修改事件(ALTER
EVENT)
语法:
ALTER
EVENT event_name
[ONSCHEDULE schedule]
[RENAME TOnew_event_name]
[ONCOMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]
5,删除事件(DROP
EVENT)
语法:
DROP
EVENT [IF EXISTS] event_name
6,举例
#查看数据库版本[5.1.6起]
select
version();
#开启evenet_sheduler进程
set
GLOBAL event_scheduler = 1;
#查看当前是否已开启事件调度器
#法1
show
variables like 'event_scheduler';
#法2
select
@@event_scheduler;
#法3
show
processlist;
#查看当前数据库中所有事件
show
events;
#查看所有数据库中所有事件
#法1
select
* from mysql.event;
#法2
select
* from information_schema.events
#创建定时任务
#1.测试环境搭建
#1.1查看存在那些数据库
show
databases;
#1.2进入数据库
use
test;
#1.3查看表
show
tables;
#1.4创建测试表student
create
table student
(
num integer,
name varchar(6),
addr varchar(10),
comment varchar(15)
)
#1.5显示表结构
desc
student;
#1.6插入数据
insert
into student values(1,'lili','noaddr','nocomment');
insert
into student values(2,'xiaoli','noaddr','nocomment');
insert
into student select * from student;
#2创建定时清理任务
#2.1每3秒清理一次表
create
event if not exists e_delete
on
schedule every 3 second
do
truncate table test.student;
#查看效果
select
* from test.student;
#2.2每天插入1条数据
create
event e_insert
on
schedule every 1 day
do
insert into test.student
values(3,'test','noaddr','nocoment');
#2.3五天后清空表
create
event e_truncate
on
schedule at current_timestamp + interval 5 day
do
truncate table test.student;
#2012年11月12日12点12分12秒清空表
create
event e_truncate
on
schedule at timestamp '2012-11-12 12:12:12'
do
truncate table test.student;
#每1天执行一次清空表
create
event e_truncate
on
schedule every 1 day
do
truncate table test.student;
#五天后开启每天执行一次清空表
create
event e_truncate
on
schedule every 1 day
starts
current_timestamp + interval 5 day
do
truncate table test.student;
#五天后停止每天执行一次清空表
create
event e_truncate
on
schedule every 1 day
ends
current_timestamp + interval 5 day
do
truncate table test.student;
#五天后开启每天执行一次清空表,1个月后停止
create
event e_truncate
on
schedule every 1 day
starts
current_timestamp + interval 5 day
ends
current_timestamp + interval 1 month
do
truncate table test.student;
#每天执行一次清空表,执行完后终止事件,以后都不执行了
create
event e_truncate
on
schedule every 1 day
on
completion not preserve
do
truncate table test.student;
#3临时关闭事件
use
test;
alter
event e_delete disable;
#注意:禁用定时功能后,当你重新启动mysql服务时,该定时功能可能被删除。查看是否被删除语句如下
show
events;
#4开启事件
use
testdb;
alter
event e_delete enable;
#5修改事件,如改为每5天清理一次
alter
event e_delete
on
schedule every 5 day
do
truncate table table_name;
#6永久删除事件
use
testdb;
drop
event if exists e_delete;
MySql 定时任务的使用的更多相关文章
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
- MySql 利用crontab实现MySql定时任务
MySql 利用crontab实现MySql定时任务 by:授客 QQ:1033553122 适用平台 任意myslq版本数据库 操作方法 登陆到数据库系统所在的linxu系统 第一步:新建名为cro ...
- mysql 定时任务job
mysql 定时任务job 1.通过show EVENTS显示当前定义的事件 2.检查event_scheduler状态:SHOW VARIABLES LIKE 'event_scheduler' 3 ...
- mysql 定时任务和存储过程
mysql 定时任务和存储过程 最近在做日志系统,中间用到了 mysql, 其中有一个要求: 把数据库中 7天之后的日志清除了.看到 mysql 也支持 定时任务.于是就用 mysql 来做了.下面就 ...
- mysql定时任务(数据库管理工具and 纯命令行)
1.工具:Navicat 2.通过下列语句l爱查询event是否开启 打开Navicat命令列界面(点击工具可以看到或按F6) 输入下面命令 show variables like '%sche%'; ...
- MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据) 分类: MySql5.x2014-06-23 15:16 1266人阅读 评论(0) 收藏 举报 mysql数据库 &l ...
- mysql 定时任务
mysql 5.1以上支持定时任务. SHOW VARIABLES LIKE 'event_scheduler'; 检查是否已开启该功能 开启计划任务功能: SET GLOBAL event_sc ...
- mysql 定时任务的使用
mysql5.1.6增加了一个事件调度器(Event Scheduler),可以做定时任务(定时删除记录,定时数据统计),取代之前系统的计划任务.mysql事件调度器可以精确到每秒执行一个任务. 事件 ...
- Navicat设定mysql定时任务步骤示例
怎样在Navicat中设置,是数据库按照记录中的日期更新状态字段 其实这个很常用,比如你网站里的某条记录的日期——比如说数据库中某条活动记录的审核日期字段已经过期,亦即当前时间已经超过审核日期,那么定 ...
随机推荐
- oracle 11g RAC数据库监听配置相关
oracle RAC 监听配置基本和单实例的配置相同 11g之后 安装RAC的过程中,不需要执行netca来手动创建监听,在安装集群软件的时候,会自动创建监听程序: 而在DBCA建库的时候,又会自动创 ...
- 编程珠玑第一章的算法,Java实现,通俗易懂
该算法也就是所谓的位图算法,用一个int表示32位,也就是实际值为1~32的数. 按照书里说的, 该算法只适合内存有限,而磁盘和时间不限,且数字在1~MAX之间不重复的排序. package demo ...
- url最后的“/”是什么作用
多了个尾巴 有时候,当你尝试在地址栏输入https://123/demo的时候,会发现浏览器会重定向到https://123/demo/这个地址,也就是多了个/,发生了重定向.有图为证: 上面这个图是 ...
- 高可用的MongoDB集群-实战篇
1.概述 最近有同学和网友私信我,问我MongoDB方面的问题:这里我整理一篇博客来赘述下MongoDB供大家学习参考,博客的目录内容如下: 基本操作 CRUD MapReduce 本篇文章是基于Mo ...
- Nginx缓存配置
访问我的博客 前言 本文介绍利用 nginx 的 nginx_ngx_cache_purge 模块来实现缓存功能,前几篇文章介绍了 Nginx 的动静分离以及 CDN 技术,在其基础上,再对整个页面进 ...
- Java 容器源码分析之Queue
简介 Queue是一种很常见的数据结构类型,在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约.实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现 ...
- Spring技术内幕_IOC容器载入Bean定义资源文件
转自:http://blog.csdn.net/chjttony/article/details/6259723 1.当spring的IoC容器将Bean定义的资源文件封装为Spring的Resour ...
- wpf 控件大小随窗体大小改变而改变
WPF可以直接通过设置图形类控件的水平和垂直Alighment为Stretch实现用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了ViewBox的显示机制是, ...
- C# 金额转中文大写
今天看到一个库是把金额转中文大写,看起来很容易,所以我就自己写了 创建的项目是创建一个 dot net core 的项目,实际上这个项目可以创建为 Stand 的. 首先创建类,这个类的构造传入一个 ...
- Java基础教程(23)--lambda表达式
一.初识lambda表达式 1.定义 lambda表达式是一个可传递的代码块,或者更确切地说,可以把lambda表达式理解为简洁地表示可传递的匿名方法的一种方式.它没有名称,但它有参数列表.函数主 ...