前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySql 定时任务的使用

MySql 定时任务的使用

作者头像
授客
发布2019-09-11 09:54:42
2.1K0
发布2019-09-11 09:54:42
举报
文章被收录于专栏:授客的专栏授客的专栏

简介

  自 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';

MySql <wbr>定时任务的使用
MySql <wbr>定时任务的使用

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

MySql <wbr>定时任务的使用
MySql <wbr>定时任务的使用

法3,show processlist;

MySql <wbr>定时任务的使用
MySql <wbr>定时任务的使用

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;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-11-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档