文章原文见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”.
分享到:
相关推荐
在IT领域,任务调度器(Task Scheduler)是一个关键的组件,尤其在操作系统、软件工程以及分布式系统中。本文将深入探讨“proj.zip_algorithms_scheduler_task scheduler”所涉及的知识点,包括任务调度的基本概念、...
NULL 博文链接:https://chembo.iteye.com/blog/896941
标题中的“Scheduler_C#_c#scheduler_childcua_scheduler_zip_”表明这是一个关于C#编程语言中的调度器(Scheduler)实现的项目,可能是一个服务应用,由“Service”一词暗示。标签进一步确认了主要技术栈是C#,并且...
`mysql.event`是MySQL服务器用来存储定时任务(也称为事件Scheduler)的地方,当这个表出现问题时,可能会导致定时任务无法正常执行。以下是一些详细的解决方案和相关知识点: 1. **权限问题**: - MySQL可能由于...
- 文档如“lect_LTE_Scheduling_DRX.pdf”可能提供了关于LTE调度和DRX的深入讲解,适合初学者和专业人士学习。 10. **智能调度**: - “lte_smart_scheduler_wp_31072013.pdf”可能介绍了智能调度的概念,这是对...
在移动通信领域,LTE(Long Term Evolution)是一种广泛采用的4G无线通信标准,它提供了高速数据传输和低延迟的服务。LTE调度器是系统的核心组件之一,负责有效地分配下行链路资源(如时隙和频率资源)给不同的用户...
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中的Event Scheduler是一种内置的定时任务机制,自5.1.x版本起被引入,它允许用户在数据库内部创建定时事件,无需借助外部程序如cron job。这个特性极大地简化了对数据库进行定时操作的流程,例如定期备份、...
首先,要启用MySQL的定时器EVENT,必须确保系统变量`event_scheduler`处于开启状态。你可以通过执行`SHOW VARIABLES LIKE '%sche%'`来检查该变量的状态。如果`event_scheduler`的值为`OFF`或者`0`,那么定时器将不会...
### 关于Quartz Scheduler #### 什么是Quartz Scheduler? Quartz Scheduler是一款功能强大的开源作业调度框架,被广泛应用于Java应用程序中。它能够触发在指定时间运行的作业,并且支持复杂的工作流模式。Quartz ...
"schetime_windows_timer_scheduler_"这个标题暗示我们将会探讨Windows中的计时器调度器,尤其是关于设置和管理定时任务的部分。描述中的"Scheduling Date and time"进一步明确了我们将深入讨论如何根据日期和时间来...
### UTL_MAIL与Oracle Scheduler详解 #### UTL_MAIL:Oracle中的邮件发送工具 UTL_MAIL是Oracle提供的一个用于发送电子邮件的内置程序包。通过UTL_MAIL,开发人员可以在Oracle环境中轻松实现邮件通知功能,这对于...
在实际开发中,为了确保Event在数据库重启或断电后仍能正常工作,需要在my.cnf或my.ini配置文件中添加`event_scheduler = ON`,使MySQL服务启动时自动开启事件调度器。 此外,Event的状态可以通过`ALTER EVENT`命令...
DolphinScheduler(海豚调度) dolphinscheduler-data-quality-dev-SNAPSHOT数据质量jar包添加配置信息:<server-name>/conf/common.propertiesdata-quality.jar.name=dolphinscheduler-data-quality-dev-SNAPSHOT.jar...
本学习笔记主要围绕Quartz的使用,特别是如何利用corn表达式来设置定时任务。 Quartz的核心概念包括Job(任务)、Trigger(触发器)和Scheduler(调度器)。Job是你要执行的实际业务逻辑,Trigger定义了Job何时被...
在深入探讨《Inside_the_Linux_scheduler.pdf》的内容之前,我们先来了解下关于Linux调度器的基本概念以及其在操作系统中的核心作用。Linux调度器是Linux内核的关键组件之一,负责管理进程间的CPU时间分配,确保多...
`rq_retry_scheduler` 是一个基于 Python 的库,用于在 RQ (Redis Queue) 框架中实现任务重试机制。RQ 是一个轻量级的队列处理系统,它使用 Redis 作为后端存储来处理异步任务。`rq_retry_scheduler` 的出现解决了在...
在本压缩包中,包含的是DolphinScheduler的安装包以及MySQL的JDBC连接器,这将帮助用户将DolphinScheduler与MySQL数据库进行集成,实现任务调度的数据存储。 Apache DolphinScheduler 1.3.4是该版本的安装包,名为`...