MySql 定时任务的使用

by:授客 QQ1033553122

简介

  自 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 定时任务的使用的更多相关文章

  1. mysql定时任务简单例子

    mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句:   [sql] update userinfo set endtime = now() WHE ...

  2. MySql 利用crontab实现MySql定时任务

    MySql 利用crontab实现MySql定时任务 by:授客 QQ:1033553122 适用平台 任意myslq版本数据库 操作方法 登陆到数据库系统所在的linxu系统 第一步:新建名为cro ...

  3. mysql 定时任务job

    mysql 定时任务job 1.通过show EVENTS显示当前定义的事件 2.检查event_scheduler状态:SHOW VARIABLES LIKE 'event_scheduler' 3 ...

  4. mysql 定时任务和存储过程

    mysql 定时任务和存储过程 最近在做日志系统,中间用到了 mysql, 其中有一个要求: 把数据库中 7天之后的日志清除了.看到 mysql 也支持 定时任务.于是就用 mysql 来做了.下面就 ...

  5. mysql定时任务(数据库管理工具and 纯命令行)

    1.工具:Navicat 2.通过下列语句l爱查询event是否开启 打开Navicat命令列界面(点击工具可以看到或按F6) 输入下面命令 show variables like '%sche%'; ...

  6. MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)

    MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据) 分类: MySql5.x2014-06-23 15:16 1266人阅读 评论(0) 收藏 举报 mysql数据库 &l ...

  7. mysql 定时任务

    mysql 5.1以上支持定时任务. SHOW VARIABLES LIKE 'event_scheduler';   检查是否已开启该功能 开启计划任务功能: SET GLOBAL event_sc ...

  8. mysql 定时任务的使用

    mysql5.1.6增加了一个事件调度器(Event Scheduler),可以做定时任务(定时删除记录,定时数据统计),取代之前系统的计划任务.mysql事件调度器可以精确到每秒执行一个任务. 事件 ...

  9. Navicat设定mysql定时任务步骤示例

    怎样在Navicat中设置,是数据库按照记录中的日期更新状态字段 其实这个很常用,比如你网站里的某条记录的日期——比如说数据库中某条活动记录的审核日期字段已经过期,亦即当前时间已经超过审核日期,那么定 ...

随机推荐

  1. 【转】通过js获取系统版本以及浏览器版本

    function getOsInfo() { var userAgent = navigator.userAgent.toLowerCase(); var name = 'Unknown'; var ...

  2. sparkshell运行sql报错: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

    下载msyql的连接driver https://download.csdn.net/download/xz360717118/10662304 把其中一个: mysql-connector-java ...

  3. 全网最全的Windows下Python2 / Python3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)

    不多说,直接上干货! 建议,你用Anaconda2或Anaconda3. 见 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库( ...

  4. Yum安装Zabbix4.2.0

    目录 1. 下载所需的存储库 2. 安装zabbix 3. 安装mysql 4. 配置数据库 5. 基本配置 6. zabbix配置文件 7. 进入web安装zabbix 1. 下载所需的存储库 # ...

  5. 了解Spring-boot-starter常用依赖模块

    Spring-boot的优点: 1.Spring框架的“约定优先于配置(COC)”理念以及最佳实践. 2.针对日常企业应用研发各种场景的Spring-boot-starter自动配置依赖模块,且“开箱 ...

  6. Solidity的自定义结构体深入详解

    一.结构体定义 结构体,Solidity中的自定义类型.我们可以使用Solidity的关键字struct来进行自定义.结构体内可以包含字符串,整型等基本数据类型,以及数组,映射,结构体等复杂类型.数组 ...

  7. 自我总结 (三) --(Java Web学习)

    自我完善的过程就是在不断的自我总结不断的改进. 在前的近半个月里,我们经过了考试,也开始了java web的项目. 先看看这次的考试.考完之后我就觉得有点不对劲的,结果 结果真的是一塌糊涂.上周五的时 ...

  8. let‘s encrypt之nginx-https没有小锁

    1.使用let's encrypt 加密后的nginx,访问的时候,发现没有小锁,chrome中: 火狐浏览器上: 会看到如上信息,这是因为css.图片或javascript任然通过http提供,可以 ...

  9. 【转】CSS和SVG中的剪切——clip-path属性和<clipPath>元素

    本文由大漠根据SaraSoueidan的<Clipping in CSS and SVG – The clip-path Property and <clipPath> Elemen ...

  10. C#基础知识回顾--C#遍历enum类型、获取enum项个数

    C#遍历enum类型 对于enum类型: 使用foreach遍历enum类型的元素并填充combox foreach ( HatchStyle hs1 in Enum.GetValues(typeof ...