原先,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以上版本才支持该对象。
原文地址:
http://hi.baidu.com/vincent_luo/blog/item/fbb7575cab710247fbf2c088.html
分享到:
相关推荐
在Windows环境下安装MySQL数据库是一个常见的任务,尤其对于网站开发或者数据管理来说,MySQL是一个非常流行的开源关系型数据库管理系统。以下是一份详细的安装指南,旨在帮助你理解安装过程和配置选项。 首先,你...
- **客户端**:可以使用MySQL客户端直接连接数据库进行管理。 - **图形界面工具**:推荐使用Navicat等图形化工具进行数据库管理和操作。 - **编程语言集成**:支持多种编程语言(如Java、Python等)中的MySQL库进行...
数据库优化 177 8.1 索引的使用 178 8.1.1索引对单个表查询的影响 178...使用EXPLAIN语句检查SQL语句 187 8.3.2 SELECT 查询的速度 188 8.3.2.1 MySQL怎样优化WHERE子句 188 8.3.2.2 MySQL怎样优化LEFT ...
(2)普通的会员对于网站的浏览会受限,仅能够查看新闻,而进入到具体的论坛、帖子以及视频等内容中需要注册成为会员方可实现具体功能的使用。在会员注册时,护院需要输入相关的信息内容来完成注册。 (3)对于管理...
数据库优化 177 8.1 索引的使用 178 8.1.1索引对单个表查询的影响 178...使用EXPLAIN语句检查SQL语句 187 8.3.2 SELECT 查询的速度 188 8.3.2.1 MySQL怎样优化WHERE子句 188 8.3.2.2 MySQL怎样优化LEFT ...
通过使用jPDL,开发者可以定义任务的顺序、决策点、并发分支以及流程中的其他元素。例如,一个简单的jPDL流程可能包含开始节点、结束节点、用户任务以及自动任务。 2. **流程设计**: 在jBPM中,流程设计通常通过...
━━━欢迎使用 护卫神·好备份[Ver3.3]━━━ 1、本软件为护卫神旗下免费软件,您可以任意使用和传播,但请勿用于商业用途...以上信息均来自官方网站,此处仅转载,内容真实有效,因为好用,所以推荐,若有侵权请联系
本文将围绕“使用开源产品组装你的Web应用架构”这一主题,探讨如何利用开源工具和代码来搭建强大的Web应用。 1. **Web服务器**:Web服务器是Web应用的基础,如Nginx和Apache。Nginx以其高性能和低内存占用著称,...
下面是使用JDBC连接MySql的一个小的教程 1、查找驱动程序 MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驱动程序为纯java驱动...
易语言简易线程池的实现。...线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级
2. 社区互动:用户空间、好友系统、短消息、勋章、任务、积分等,增强用户粘性。 3. 内容管理:文章发布、分类管理、评论系统,方便构建内容丰富的社区。 4. 手机版适配:适应移动设备浏览,提供良好的移动端用户...
关于数据库,Rails默认使用SQLite,但也可轻松切换到MySQL、PostgreSQL等其他数据库。数据库迁移是Rails中的一个重要概念,通过编写Ruby代码来描述数据库结构的变化,然后使用`rake db:migrate`命令应用这些变化。 ...
2. 添加MySQL数据库驱动插件、执行SQL语句:这包括了如何将数据库驱动添加到Qt项目中以及如何使用Qt来操作数据库执行查询。 3. 使用模型/视图结构管理数据:解释了Qt中使用QSqlQueryModel、QSqlTableModel、...
- **任务调度**:指导如何设置定时任务,执行计划内的脚本任务。 - **命令行开发**:介绍如何使用命令行工具进行开发和部署操作。 #### 十一、扩展 - **插件机制**:解释插件的开发和使用方法。 - **行为扩展**:...
14. 数据库操作:讲解了如何在Qt中操作数据库,包括添加MySQL驱动、执行SQL语句以及使用QSqlQueryModel、QSqlTableModel等模型进行数据库数据的展示和管理。 15. XML数据处理:介绍了Qt中处理XML文件的方法,包括...
知识点: pcmcia 是一个支持笔记本电脑服务,能够提供笔记本电脑支持功能,支持笔记本电脑的使用。 27. Portmap:提供了 RPC 连接支持服务。 知识点: Portmap 是一个提供了 RPC 连接支持服务,能够提供 RPC 连接...