加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL中的事件调度器EVENT是啥样的

发布时间:2022-01-13 15:09:14 所属栏目:MySql教程 来源:互联网
导读:这篇文章将为大家详细讲解有关MySQL中的事件调度器EVENT是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 MySQL中的事件调度器EVENT,可以在数据库里按照设定的时间周期触发某些操作,类似于定
     这篇文章将为大家详细讲解有关MySQL中的事件调度器EVENT是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
 
     MySQL中的事件调度器EVENT,可以在数据库里按照设定的时间周期触发某些操作,类似于定时任务机制。
 
     MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序。
 
EVENT由其名称和所在的schema唯一标识。
 
      EVENT根据计划执行特定操作。操作由SQL语句组成,语句可以是BEGIN…END语句块。EVENT可以是一次性的,也可以是重复性的。一次性EVENT只执行一次,周期性EVENT以固定的间隔重复其操作,并且可以为周期性EVENT指定开始日期和时间、结束日期和时间。(默认情况下,定期EVENT在创建后立即开始,并无限期地继续,直到它被禁用或删除。)
 
EVENT由一个特殊的事件调度器线程执行,用SHOW PROCESSLIST可以查看。
 
root@database-one 13:44:  [gftest]> show variables like '%scheduler%';
+-----------------+-------+| Variable_name   | Value |
+-----------------+-------+| event_scheduler | OFF   |
+-----------------+-------+1 row in set (0.01 sec)
root@database-one 13:46:  [gftest]> show processlist;
+--------+------+----------------------+-----------+---------+------+----------+------------------+| Id     | User | Host                 | db        | Command | Time | State    | Info             |
+--------+------+----------------------+-----------+---------+------+----------+------------------+......
+--------+------+----------------------+-----------+---------+------+----------+------------------+245 rows in set (0.00 sec)
root@database-one 13:46:  [gftest]> set global event_scheduler=1;
Query OK, 0 rows affected (0.00 sec)
root@database-one 13:47:  [gftest]> show variables like '%scheduler%';
+-----------------+-------+| Variable_name   | Value |
+-----------------+-------+| event_scheduler | ON    |
+-----------------+-------+1 row in set (0.01 sec)
root@database-one 13:47:  [gftest]> show processlist;
+--------+-----------------+----------------------+-----------+---------+------+------------------------+------------------+| Id     | User            | Host                 | db        | Command | Time | State                  | Info             |
+--------+-----------------+----------------------+-----------+---------+------+------------------------+------------------+......
| 121430 | event_scheduler | localhost            | NULL      | Daemon  |   33 | Waiting on empty queue | NULL             |
......
+--------+-----------------+----------------------+-----------+---------+------+------------------------+------------------+246 rows in set (0.01 sec)
可以看到,默认情况下,MySQL的EVENT没有打开,通过设置event_scheduler参数来打开或者关闭EVENT。打开后就会多一个event_scheduler,这个就是事件调度器线程。
 
除了打开和关闭,还可以禁用,要禁用EVENT,请使用以下两种方法之一:
 
启动MySQL时用命令行参数
--event-scheduler=DISABLED
在MySQL配置文件中配置参数
event_scheduler=DISABLED
MySQL 5.7中创建EVENT的完整语法如下:
 
CREATE
    [DEFINER = user]    EVENT
    [IF NOT EXISTS]
    event_name    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'string']    DO event_body;
schedule:
    AT timestamp [+ INTERVAL interval] ...
  | EVERY interval
    [STARTS timestamp [+ INTERVAL interval] ...]
    [ENDS timestamp [+ INTERVAL interval] ...]
interval:
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!