事件

EVENT 事件

  • 类似于shell中的计划任务
  • shell中的计划任务可以精确到分钟级,而MySQL中的事件可以精确到秒级

事件的优缺点

优点:

  • 一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能,可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用

缺点:

  • 定时触发,不可以直接调用

事件的管理

事件调度器的开启和关闭

  • MySQL事件调度器event_scheduler负责调用事件,它默认是关闭的(新版MySQL8.0.27默认是开启的)。这个调度器不断地监视一个事件是否要调用, 要创建事件,必须打开调度器

  • 服务器系统变量和服务器选项:

​ event_scheduler:默认值为OFF,设置为ON才支持Event,并且系统自动打开专用的线程

范例:开启和关闭event_scheduler

#默认事件调度功能是关闭的(新版MySQL8.0.27默认是开启的)
MySQL [hellodb]> select @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| OFF               |
+-------------------+

#临时开启event_scheduler
set global event_scheduler=1;

#临时关闭event_scheduler
set global event_scheduler=0;

#永久开启,配合临时开启,然后再将配置添加到配置文件中
[root@centos8 ~]#vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
event_scheduler=ON

-----------------------------------------------------------------------------
#开启后会看到进程
MySQL [hellodb]> show processlist\G;
...
     Id: 9
   User: event_scheduler
   Host: localhost
     db: NULL
Command: Daemon
   Time: 1160
  State: Waiting on empty queue
   Info: NULL
2 rows in set (0.00 sec)
...