MySQL入门到精通(十七)

                                                   事件

17.1 事件概述

在MySQL 5.1中新增了一个特色功能事件调度器(Event Scheduler),简称事件。它可以作为定时任务调度器,取代部分原来只能用操作系统的计划任务才能执行的工作。另外,更值得一提的是,MySQL的事件可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下是非常实用的。

事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。

事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的。由于他们彼此相似,所以事件也称为临时性触发器。

事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。

17.1.1 查看事件是否开启

事件由一个特点的线程来管理。启动事件调度器后,拥有SUPER权限的账户执行SHOW PROCESSLIST命令就可以看到这个线程了。查看事件是否开启代码:

SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
SHOW PROCESSLIST;

17.1.2 开启事件

通过设定全局变量event_scheduler的值即可动态的控制事件调度器是否启用。开启MySQL的事件调度器,可以通过下面两种方式实现。

1.通过设置全局参数修改

在MySQL的命令行窗口中,使用SET GLOBAL命令可以开启或关闭事件。将event_scheduler参数的值设置为ON,则开启事件;如果设置为OFF,则关闭事件。查看事件是否开启代码:

SET GLOBAL event_scheduler = ON;
SHOW VARIABLES LIKE 'event_scheduler';

注意:如果想要始终开启事件,那么在使用SET GLOBAL开启事件后,还需要在my.ini/my.cnf中添加event_scheduler = ON。因为如果没有添加,MySQL重启事件又会回到原来的状态。

猜你喜欢

转载自blog.csdn.net/weixin_42257895/article/details/81334491