mysql 定时任务的实现与使用方法示例

本文实例讲述了mysql 定时任务的实现与使用方法。分享给大家供大家参考,具体如下:

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

事件调度器与触发器的区别:事件调度器是基于特定时间周期来触发执行某些任务,触发器是基于某个表产生的事件来触发。

一、查看是否开启

> show variables like 'event_scheduler';

二、开启事件调度器

set global event_scheduler = on;

这里的设置,当mysql重启后,又会自动关闭。如果需要一直开启,需要在my.ini中配置如下:

event_scheduler = on

三、创建事件语法

CREATE EVENT [IF NOT EXISTS ] event_name
ON SCHEDULE schedule
[ ON COMPLETION [ NOT ] PRESERVE ]
[ ENABLE | DISABLE ]
[ COMMENT '注释' ]
DO SQL语句;

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 | HOUR_SECOND | MINUTE_SECOND }

event_name:事件名,最大长度64个字符。

schedule:执行时间。

[ ON COMPLETION [ NOT ] PRESERVE ] :事件是否需要复用。

[ ENABLE | DISABLE ] :事件开启或关闭。

四、关闭事件

ALTER EVENT event_name DISABLE;

五、开启事件

ALTER EVENT event_name ENABLE;

六、删除事件

DROP EVENT [IF EXISTS ] event_name;

七、查看所有事件

SHOW EVENTS;

八、事件例子

我们先创建一个简单的test表用于测试

CREATE TABLE `test` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `now` datetime DEFAULT NULL COMMENT '时间',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

事件类型有两种,一种是间隔触发,一种是特定时间触发

我们每隔一秒向test表插入一条记录:

DROP EVENT IF EXISTS event_test;
CREATE EVENT event_test
ON SCHEDULE EVERY 1 SECOND STARTS '2017-08-22 11:57:00' ENDS '2017-08-22 12:00:00'
ON COMPLETION PRESERVE
ENABLE
COMMENT '每隔一秒向test表插入记录'
DO INSERT INTO test VALUES(NULL, now());

我们指定时间来向test表插入一条记录:

DROP EVENT IF EXISTS event_test2;
CREATE EVENT event_test2
ON SCHEDULE AT '2017-08-22 12:01:00'
ON COMPLETION PRESERVE
ENABLE
COMMENT '指定时间向test表插入记录'
DO INSERT INTO test VALUES(999999, now());

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

希望本文所述对大家MySQL数据库计有所帮助。

(0)

相关推荐

  • MySQL定时器开启、调用实现代码

    创建测试表 复制代码 代码如下: CREATE TABLE t ( v VARCHAR(100) NOT NULL ) ENGINE INNODB DEFAULT CHARSET=utf8; 创建定时器 调用的存储过程 DELIMITER $$ DROP PROCEDURE IF EXISTS e_test $$ CREATE PROCEDURE e_test() BEGIN INSERT INTO t VALUES('1'); END $$ DELIMITER ; 要使定时起作用 MySQL的

  • mysql的定时任务实例教程

    前言 自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作.更值得 一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精 确到每分钟执行一次.对于一些对数据实时性要求比较高的应用(例如:股票.赔率.比分等)就非常适合. 本文将给大家详细介绍关于

  • mysql自动定时备份数据库的最佳方法(windows服务器)

    网上有很多关于window下Mysql自动备份的方法,可是真的能用的也没有几个,有些说的还非常的复杂,难以操作. 我们都知道mssql本身就自带了计划任务可以用来自动备份,可是mysql咱们要怎么样自动有备份呢? 教大家一个最简单的方法. 这个方法是用bat批处理来完成的. 假想环境:MySQL 安装位置:D:\Program Files\MySQL\MySQL Server 5.0\data 如图: 数据库名称为:952game数据库备份目的地:d:\db_bak\ (你想把数据库备份到哪个盘

  • 详解MySQL用事件调度器Event Scheduler创建定时任务

    前言 事件调度器相当于操作系统中的定时任务(如:Linux中的cron.Window中的计划任务),但MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用. 1. 创建/修改事件(EVENT) 在MySql中,创建一个新的调度器使用CREATE EVENT,其语法规则如下: CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON

  • Linux下Mysql定时任务备份数据的实现方法

    前言 备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程.而对于一些网站.系统来说,数据库就是一切,所以做好数据库的备份是至关重要的! 备份是什么? 本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录: cd /mnt mkdir dbback pwd /mnt/dbback 创建shell脚本 脚本名称可根据自己规范进行自定义: vim bcmysql.sh 进入编辑器,输入以下内容: #!

  • mysql 让一个存储过程定时作业的代码

    1.在mysql 中建立一个数据库 test1 语句:create database test1 2.创建表examinfo create table examinfo( id int auto_increment not null, endtime datetime, primary key(id) ); 3 插入数据: insert into examinfo values('1','2011-4-23 23:26:50'); 4 创建存储过程test CREATE PROCEDURE te

  • mysql实现设置定时任务的方法分析

    本文实例讲述了mysql实现设置定时任务的方法.分享给大家供大家参考,具体如下: 今天遇到了个需要每天定时执行的任务,在mysql数据库里面提供了这样的功能,正好整理下分享出来. 1.首先检查是否开启了定时任务 查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%'; 将事件计划开启 : SET GLOBAL event_scheduler = 1; 将事件计划关闭 : SET GLOBAL event_scheduler = 0; 关闭事件任务 : A

  • mysql定时任务(event事件)实现详解

    1.事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的"事件调度器". 事件和触发器类似,都是在某些事情发生的时候启动.当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的.由于他们彼此相似,所以事件也称为临时性触发器. 事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linu

  • 逐步讲解MySQL中定时事件计划的创建

    一.使用过程 1.查看当前是否已开启事件计划(调度器)有3种方法: SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; SHOW PROCESSLIST; 2. 开启事件计划(调度器)开关有4种方法: SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1; SET GLOBAL event_scheduler = ON; SET @@globa

  • Linux下如何实现Mysql定时任务

    假设前提:每天晚上10点到早上5点,每10分钟定时执行存储过程. 实现方式: 第一种是利用Mysql本身实现,制定event定时任务,可以借助Navicat For Mysql或其他数据库开发工具去做: 第二种实现方式是利用linux的定时任务,这个是利用Linux系统自带任务管理工具实现的. 一.Mysql中event定时任务的相关命令, 1.查看event是否启用: SELECT @@event_scheduler; 或 SHOW VARIABLES LIKE 'event%'; 2.开启定

  • MySQL定时执行脚本(计划任务)命令实例

    查看event是否开启 复制代码 代码如下: show variables like '%sche%'; 将事件计划开启 复制代码 代码如下: set global event_scheduler =1; 创建存储过程test 复制代码 代码如下: CREATE PROCEDURE test () BEGIN update examinfo SET endtime = now() WHERE id = 14; END; 创建event e_test 复制代码 代码如下: create event

随机推荐