文章原文见MySQL官方文档:http://dev.mysql.com/doc/refman/5.1/en/events-overview.html
英语很烂,忘海涵,若有错误,烦请指正则个:)
MySQL的Event,就是根据一个调度表运行的一系列任务。所以,我们有时也可以把它们看成是预先安排好的事件(scheduled event)。当你创建了一个事件时,其实你创建了一个或多个SQL语句,而这些语句将会隔一个或多个时间间隔进行执行,或者在某一个约定的时间开始或完成。从概念上来说,有一点像Unix的crontab (也被称作”Cron job”),也有点类似于Windows的任务调度器。
这种调度任务有时候也被称作“时间触发器”,也就是说,它们是根据特定的时间来触发的对象。当然,这样理解基本正确,但为了和Section18.3中讨论的触发器(Trigger)进行区分,我们还是称其为事件(events)。比起“时间触发器”,用“事件”显得更加针对某种特定的场景。因为触发器是指当某个特定的表上发生了某些特定的事件后才被调用执行语句的数据库对象,而时间则是由于为了响应特定的时间间隔而被执行语句的对象。(Whereas a trigger is a database object whose statements are executed in response to a specific type of event that occurs on a given table, a (scheduled) event is an object whose statements are executed in response to the passage of a specified time interval.)
然而现在还没有针对时间调度的SQL标准。不过在其他的数据库系统中已早已先例,你也许已经注意到了那些应用和MySQL中事件的相同点。
MySQL的事件有如下几个特点和属性:
• 在MySQL5.1.12(包括)之后,一个事件由它的名字和其所在的Scheme唯一确定(在之前,事件还由它的定义者决定)
• 事件根据某计划执行特定的动作(a specific action)。这个动作由一个SQL语句组成,如果需要,这个SQL语句可以是包含在BEGIN…END块之间的复合语句(Compound statement)。一个事件可以一次执行或者循环执行(one time or recurrent)。 一次执行的事件只执行一次。而循环任务则在特定的时间重复执行,针对该循环事件的计划可被设定为一个特定的开始日期和时间,也可以设定其结束的日期和时间,当然可以两者兼顾或者二者取一。(默认情况下,一个循环事件在被创建后便开始执行,并不断的循环下去,直到该事件被停止或删除 (disabled or dropped))
如果一个重复事件在它的间隔时间内没有结束, 那么该事件同时运行可能会出现多个结果。如果这是不允许的,那么你应该设计出一种机制来阻止这种同时运行的情况。比如,你可以使用GET_LOCK()函数,或对行或表进行加锁。
• 用户可以根据需要利用SQL语句创建、修改和删除事件。有语法错误的事件创建或修改语句会执行失败,并显示出对应的错误信息。某一用户有可能在该事件的执行语句中放置了其用户无权执行的语句,这样,该事件的创建和修改语句可以被成功执行,但该事件的动作却会执行失败。细节可以查看Section 18.4.6, “The Event Scheduler and MySQL Privileges”
• 用户可以通过使用SQL语句来设置或修改某一事件的多种属性,包括:事件的名字,启动时间,持久化(当它的时间表过期之后,是否保存之),状态(开启或关闭),需要执行的动作以及被分配到的Schema等等。可查看Section 12.1.2, “ALTER EVENT Syntax”.
事件的默认定义者(definer)就是创建该事件的用户。不过,当某一用户发起了最后一个作用于该事件的Alert Event语句,则其定义者就变成了此用户。一个事件也可以被任何该数据库中拥有表EVENT权限的用户修改。(不同于MySQL5.1.12,之前只有用户的定义者或者拥有mysql.event表权限的用户可以修改某一事件),具体可查看Section 18.4.6, “The Event Scheduler and MySQL Privileges”.
一个时间动作的语句包括大多数Stored routines允许的SQL语句。可查看Section E.1, “Restrictions on Stored Routines, Triggers, and Events”.
分享到:
相关推荐
NULL 博文链接:https://chembo.iteye.com/blog/896941
c# Scheduler (Service)
Task scheduler based on algorithms with absolute priorities
Getting_Started_with_Quartz_Scheduler.pdf Version 2.2.1
Here you have some documents aboul LTE scheduler.
lte schedulaing algoritm
1577 – Cannot proceed because system tables used by Event Scheduler where found damaged at server start 1、SQL安装包解压后在bin将mysql_upgrade.exe和mysqlcheck.exe两个文件复制到W MySQL5.7.24\bin目录...
cron4j is a scheduler for the Java platform which is very similar to the UNIX cron daemon. With cron4j you can launch, within your Java applications, any task you need at the right time, according to ...
要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1 — 查看是否开启定时器 SHOW VARIABLES LIKE ‘%sche%’; — 开启定时器 0:off 1:on SET GLOBAL event_scheduler = 1; — 创建事件 –每隔一秒...
在MySql中,创建一个新的调度器使用CREATE EVENT,其语法规则如下: CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] ...
SHOW VARIABLES LIKE ‘event_scheduler’;或 SELECT @@event_scheduler;或 SHOW PROCESSLIST;若显示: +—————–+——-+| Variable_name | Value |+—————–+——-+| event_scheduler | OFF |+—————...
MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序。 EVENT由其名称和所在的schema唯一标识。 EVENT根据计划执行特定操作。操作由SQL语句组成,语句可以是BEGIN…END语句块。...
utl_mail oracle scheduler对发邮件的ORACLE包UTL_MAIL以及任务作业详细分析
一、概述 事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功>能。例如,Linux 中的 crontabe 只能精确到每分钟执行一次,而 MySQL ...
IS413_Project1_Scheduler
Scheduling Date and time
其实这个错误按字面意思就是不能打开mysql.event表,那么就是权限问题导致的。一般mysql也无法运行。 在 本地计算机 无法启动 MySQL 服务。错误 1067: 进程意外终止。 mysql 安装改变数据库路径出现的问题解决方法 ...
1. 连接登录MySQL后,先查看MySQL是否开启了事件功能: 命令:show variables like ‘%sc%’; 发现event_sheduler是OFF关闭的; 2. 打开event_scheuler: 临时开启(mysql服务重启后之后失效) SET GLOBAL event_...