使用MySQL计划任务

转载 2013年12月02日 14:51:55

【转载】使用MySQL计划任务


原先,LAMP的程序员为了完成一些周期性的数据库操作任务,总是不得不借助于操作系统的帮助,比如Windows的计划任务,或者Linux的contab。MySQL5.1终于新增了Event Scheduler功能,可以直接在后台实现一下定时性的作业。但不知道什么原因,在英文版的参考手册中,位于触发器和视图之间的第20章Event Scheduler,在中文版中被删减掉了,手册的其他部分也没有丝毫提到它,好像它根本就不存在一样,所以它的知名度不是很高。有兴趣的读者可以参考http://dev.mysql.com/doc/refman/5.1/en/events.html获得比较完整的帮助。 

1.1 开启 
     MySQL的Event Scheduler是根据预先安排的计划进行数据库操作的数据库对象,可以看作是一种“时间触发器”。Event实际上是被一个特殊的event scheduler线程执行的,假如它正在运行的话,可以通过SHOW PROCESSLIST命令看到它。全局变量event_scheduler用来设定是否服务器端运行执行计划任务,该变量有如下三种值: 
      OFF:计划任务处于停止状态,event scheduler线程没有运行。是event_scheduler的默认值; 
      ON:计划任务处于运行状态,event scheduler线程启动,并执行所有的计划任务; 
      DISABLED:该值将致使计划任务不可运行 
     你可以使用下列的任意一句开启计划任务: 
           SET GLOBAL event_scheduler = ON; 
           SET @@global.event_scheduler = ON; 
           SET GLOBAL event_scheduler = 1; 
           SET @@global.event_scheduler = 1; 

1.2 创建 
     Event Scheduler作为一种数据库对象,其增删改的DDL语句与其他对象非常相似,无非CREATE、ALTER、DROP等,创建的基本语法是: 
          CREATE EVENT        (1) 
          [IF NOT EXISTS]        (2) 
          event_name         (3) 
          ON SCHEDULE schedule      (4) 
          [ON COMPLETION [NOT] PRESERVE]   (5) 
          [ENABLE | DISABLE]       (6) 
          [COMMENT 'comment']       (7) 
          DO sql_statement        (8) 
     逐条介绍: 
     (1) 创建Event嘛,这俩关键字当然不能少了 
     (2) 如果不存在同名的数据库对象才创建 
     (3) 计划任务的名字。作为数据库对象,都有一个本库内唯一的名字做标识 
     (4) 计划任务的计划,重点就在这儿。有两个关键字来设定任务的执行计划:AT和EVERY: 
          AT指定的是一个一次性计划,后面跟着一个时间戳,后续的sql语句将在指定的时间被执行一次; 
          EVERY指定的是一个周期性计划,在该子句中可以指定从某时间点到某时间点期间,每隔某周期就执行一次该任务。 
     (5) 任务整个执行完毕后,该计划任务对象是否还在数据库中保留。默认不保留 
     (6) 有效或失效。默认有效 
     (7) 真正要执行的语句 

1.3 实例 
      首先是一个一次性计划任务的例子,该任务在指定的2008-02-06 23:59:00这个时间点,向messages表中插入一条记录: 
          CREATE EVENT e_totals 
          ON SCHEDULE AT '2006-02-10 23:59:00' 
          DO 
          INSERT INTO messages VALUES (null, 'admin', '过年了!', '祝大家鼠年发大财!!!', '127.0.0.1',NOW()); 
      下面是一个周期性计划任务的例子,该任务在2008-02-06 23:59:00开始的一年内,每隔1小时就删除掉messages表的早先的10条记录: 
          CREATE EVENT e_hourly 
          ON SCHEDULE 
          EVERY 1 HOUR STARTS '2007-02-10 23:59:00' ENDS '2008-02-10 23:59:00' 
          DO 
          DELETE FROM messages limit 10; 

     计划任务属于数据库服务器端的对象,创建好后,只要开启了event_scheduler,就可以自动触发执行了,不用在前台进行任何干预。当然一定要记住,只有MySQL5.1以上版本才支持该对象。 
举报

相关文章推荐

MySQL任务计划

MySQL的功能越来越强大了,逐渐在想大型商业数据库靠拢了,这不,5.1的版本已然支持视图、触发器、job等功能。 下面简单介绍下我所使用的MySQL的job功能(也就是计划任务,Oracle中...

mysql计划任务

http://www.cnblogs.com/c840136/articles/2388512.html     MySQL计划任务(事件调度器)(Event Scheduler)  My...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

使用MySQL计划任务 二

原先,LAMP的程序员为了完成一些周期性的数据库操作任务,总是不得不借助于操作系统的帮助,比如Windows的计划任务,或者Linux的contab。MySQL5.1终于新增了Event Schedu...

MySQL计划任务之三

注意:5.1以后才支持! 让MYSQL定期执行指定的一条命令。功能类似于crontab。 1、 检查你的MYSQL是否开了这个功能 SHOW VARIABLES LIKE 'event_sche...

MYSQL计划任务介绍

MySQL计划任务   注意:MySQL只在5.1以上版本支持计划任务 一、创建计划任务: 语法: CREATE [DEFINER = { user | CURRENT_U...

计划任务

一次性安排进程任务    batch 命令 安排作业在系统负载不重时执行一次    作用:安排一个或多个命令在系统负载较轻时运行一次(一般情况下负载较轻指平均负载降到0.8以下)    at  ...

计划任务

计划任务顾名思义就是将来计划要做的事儿,这里分两种,一次性的和周期性的其中:一次性:我们用at和batch1 at简单点说 at直接加时间,就可以指定某个特定时间,直接回车,然后指定你要执行的命令然后...

计划任务

计划任务 在管理linux系统的时候我们,通常要使用计划任务,计划在某个时候让系统最某些任务。计划任务又可分为两种:1. 一次性  2.   周期性。一次性任务:at       batch ...

计划任务

比如说 在某个特定的时间点删除一个文件 编辑一批处理文件 ce.bat 内容 del e:\ce.bat 再计划任务   如果你的电脑经常需要自动运行一些程序,例如定时备份,预先...

计划任务

linux下面有atd和crond两种计划任务,其中,atd服务使用的at命令只能执行一次,而crond服务使用的crontab定义的命令,是循环执行的。crond 是linux用来定期执行程序的命令...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)