iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >带你了解MySQL中的事件调度器EVENT
  • 163
分享到

带你了解MySQL中的事件调度器EVENT

MySQL事件调度器MySQLevent 2022-05-30 23:05:52 163人浏览 八月长安
摘要

Mysql中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或windows任务调度程序。 EVENT由其名称和所在的schema唯一标识。 EVENT根据计划执行特定操作。操作由sql语句组成

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}

详细说明可以参考官网https://dev.mysql.com/doc/refman/5.7/en/create-event.html

我们通过一个实例来验证下。
1)创建一张表。


root@database-one 13:47: [gftest]> create table testevent(id int auto_increment primary key,create_time datetime);
Query OK, 0 rows affected (0.01 sec)

root@database-one 13:50: [gftest]> select * from testevent;
Empty set (0.00 sec)

2)创建一个EVENT,每3秒往表中插一条记录。


root@database-one 13:50: [gftest]> create event insert_date_testevent on schedule every 3 second do
  -> insert into testevent(create_time) values(now());
Query OK, 0 rows affected (0.01 sec)

root@database-one 13:53: [gftest]> show events \G
*************************** 1. row ***************************
         Db: gftest
        Name: insert_date_testevent
       Definer: root@%
      Time zone: +08:00
        Type: RECURRING
     Execute at: NULL
   Interval value: 3
   Interval field: SECOND
       Starts: 2020-03-26 13:53:10
        Ends: NULL
       Status: ENABLED
     Originator: 1303306
character_set_client: utf8
collation_connection: utf8_general_ci
 Database Collation: utf8_general_ci
1 row in set (0.00 sec)

3)过一会,去表中查询数据。


root@database-one 13:53: [gftest]> select * from testevent;
+----+---------------------+
| id | create_time     |
+----+---------------------+
| 1 | 2020-03-26 13:53:10 |
| 2 | 2020-03-26 13:53:13 |
| 3 | 2020-03-26 13:53:16 |
| 4 | 2020-03-26 13:53:19 |
| 5 | 2020-03-26 13:53:22 |
| 6 | 2020-03-26 13:53:25 |
| 7 | 2020-03-26 13:53:28 |
| 8 | 2020-03-26 13:53:31 |
| 9 | 2020-03-26 13:53:34 |
| 10 | 2020-03-26 13:53:37 |
| 11 | 2020-03-26 13:53:40 |
| 12 | 2020-03-26 13:53:43 |
| 13 | 2020-03-26 13:53:46 |
| 14 | 2020-03-26 13:53:49 |
| 15 | 2020-03-26 13:53:52 |
| 16 | 2020-03-26 13:53:55 |
+----+---------------------+
16 rows in set (0.00 sec)

从表里数据可以看到,创建的插数定时任务已经在正常运行了。

EVENT的详细信息除了用show event命令,还可以从mysql.event或infORMation_schema.events中查询,也可以用show create event命令查看。


root@database-one 00:09: [gftest]> select * from mysql.event \G
*************************** 1. row ***************************
         db: gftest
        name: insert_date_testevent
        body: insert into testevent(create_time) values(now())
       definer: root@%
     execute_at: NULL
   interval_value: 3
   interval_field: SECOND
       created: 2020-03-26 13:53:10
      modified: 2020-03-26 13:53:10
    last_executed: 2020-03-26 16:09:37
       starts: 2020-03-26 05:53:10
        ends: NULL
       status: ENABLED
    on_completion: DROP
      sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
       comment:
     originator: 1303306
      time_zone: +08:00
character_set_client: utf8
collation_connection: utf8_general_ci
    db_collation: utf8_general_ci
      body_utf8: insert into testevent(create_time) values(now())
1 row in set (0.00 sec)

root@database-one 00:09: [gftest]> select * from information_schema.events \G
*************************** 1. row ***************************
    EVENT_CATALOG: def
    EVENT_SCHEMA: gftest
     EVENT_NAME: insert_date_testevent
       DEFINER: root@%
      TIME_ZONE: +08:00
     EVENT_BODY: SQL
  EVENT_DEFINITION: insert into testevent(create_time) values(now())
     EVENT_TYPE: RECURRING
     EXECUTE_AT: NULL
   INTERVAL_VALUE: 3
   INTERVAL_FIELD: SECOND
      SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
       STARTS: 2020-03-26 13:53:10
        ENDS: NULL
       STATUS: ENABLED
    ON_COMPLETION: NOT PRESERVE
       CREATED: 2020-03-26 13:53:10
    LAST_ALTERED: 2020-03-26 13:53:10
    LAST_EXECUTED: 2020-03-27 00:10:22
    EVENT_COMMENT:
     ORIGINATOR: 1303306
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
 DATABASE_COLLATION: utf8_general_ci
1 row in set (0.02 sec)

root@database-one 00:10: [gftest]> show create event insert_date_testevent \G
*************************** 1. row ***************************
        Event: insert_date_testevent
      sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
      time_zone: +08:00
    Create Event: CREATE DEFINER=`root`@`%` EVENT `insert_date_testevent` ON SCHEDULE EVERY 3 SECOND STARTS '2020-03-26 13:53:10' ON COMPLETION NOT PRESERVE ENABLE DO insert into testevent(create_time) values(now())
character_set_client: utf8
collation_connection: utf8_general_ci
 Database Collation: utf8_general_ci
1 row in set (0.00 sec)

以上就是带你了解MySQL中的事件调度器EVENT的详细内容,更多关于MySQL 事件调度器EVENT的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 带你了解MySQL中的事件调度器EVENT

本文链接: https://www.lsjlt.com/news/9694.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中的事件调度器EVENT是怎样的
    这篇文章将为大家详细讲解有关MySQL中的事件调度器EVENT是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MySQL中的事件调度器EVENT,可以...
    99+
    2024-04-02
  • MySQL事件调度器Event Scheduler是实例介绍
    这篇文章主要介绍“MySQL事件调度器Event Scheduler是实例介绍”,在日常操作中,相信很多人在MySQL事件调度器Event Scheduler是实例介绍问题上存在疑惑,小编查阅了各式资料,整...
    99+
    2024-04-02
  • 一文带你了解MySQL中的事务
    目录一.什么是事务二.事务操作演示小结三.事务的特性四.事务的隔离级别概述四种隔离级别脏读、不可重复读、幻读操作一.什么是事务 在mysql中的事务(Transaction)是由存储引擎实现的,在MySQL中,只有Inn...
    99+
    2023-02-17
    MySQL事务使用 MySQL事务
  • 带你了解NodeJS事件循环
    浏览器中存在两个任务队列,一个是宏任务一个是微任务。但是在NodeJS中一共存在六个事件队列,timers,pending callbacks,idle prepare,poll,...
    99+
    2024-04-02
  • 一文带你了解WPF中的附加事件
    目录什么是附加事件附加事件用法Microsoft 官方文档附加事件案例定义自定义控件注册使用附加事件什么是附加事件 Microsoft 官方概述: 附加事件可用于在非元素类中定义新的...
    99+
    2022-12-08
    WPF附加事件用法 WPF附加事件 WPF 事件
  • 怎么理解MySQL的EVENT事件
    这篇文章主要介绍“怎么理解MySQL的EVENT事件”,在日常操作中,相信很多人在怎么理解MySQL的EVENT事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解My...
    99+
    2024-04-02
  • MySQL事件调度器的用法介绍
    本篇内容主要讲解“MySQL事件调度器的用法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL事件调度器的用法介绍”吧! 事件调度器有时也可称为临时...
    99+
    2024-04-02
  • 【MySQL】一文带你彻底了解事务机制
    文章目录 何谓事务?事务的特性:ACID事务的操作隔离性引发的并发问题不可重复读和幻读有什么区别 事务的隔离级别MySQL 的隔离级别是基于锁实现的吗?默认隔离级别解决幻读的方法总结 我们设想一个场景,这个场景中我们需...
    99+
    2023-08-17
    mysql 数据库 服务器 隔离级别 幻读
  • 带你深入了解Android的事件分发机制
    Android的事件分发机制是指在Android系统中,如何将用户的触摸事件、按键事件等传递给正确的View进行处理的一套机制。它是Android应用程序中实现交互的重要部分,确保用户的操作能够被正确地捕获和处理。 Android的事件分发...
    99+
    2023-08-18
    android android studio ui 知识图谱 事件分发
  • MYSQL中怎么实现一个事件调度器
    这篇文章给大家介绍MYSQL中怎么实现一个事件调度器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.查看是否开启:mysql> show variables like '...
    99+
    2024-04-02
  • 【MySQL】一文带你了解MySQL中的子查询
    文章目录 1. 需求分析与问题解决1. 1实际问题1.2 子查询的基本使用1.3 子查询的分类 2. 单行子查询2.1 单行比较操作符2.2 代码示例2.3 HAVING 中的子查询2.4 注意的问题 3. 多行子查...
    99+
    2023-08-18
    mysql 数据库
  • 一文带你了解MySQL中触发器的操作
    目录概述介绍触发器的特性操作—创建触发器操作—new和old操作—查看触发器操作—删除触发器注意事项概述 介绍 触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能...
    99+
    2023-02-17
    MySQL触发器操作 MySQL触发器
  • 一文带你了解MySQL中的锁机制
    目录一.概述 分类二.MyISAM表锁如何加表锁写锁演示三.InnoDB行锁行锁特点一.概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。 在数据库中,除传统的计算资源(如CPU、RAM、I...
    99+
    2023-02-17
    MySQL锁机制使用 MySQL锁机制 MySQL锁
  • MySQL故障切换中事件调度器的注意事项有哪些
    今天就跟大家聊聊有关MySQL故障切换中事件调度器的注意事项有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 &nb...
    99+
    2024-04-02
  • 一篇文章带你了解vue.js的事件循环机制
    目录一、事件循环机制介绍       二、经典事件循环面试题总结一、事件循环机制介绍    ...
    99+
    2024-04-02
  • JavaScript的事件流你了解吗
    目录1. 什么是事件流?2. 事件流模型2.1)事件冒泡2.2)事件捕获3. DOM事件流总结1. 什么是事件流 ? 在学习事件流之前我们先看...
    99+
    2024-04-02
  • 一文带你深入了解Go语言中的事务
    目录背景事务实践事务说明优化方案总结背景 近期看到一篇文章,真的感叹作者的洞察力,在开发时有可能就会犯这样的错误,所以一定要多学习,多实践。其问题就是你在提交事务时,如果中间有其他业...
    99+
    2023-05-16
    Go语言事务终止 Go语言事务 Go 事务
  • 一文带你了解MySQL之事务隔离级别和MVCC
    目录 一、数据准备二、事务隔离级别2.1 事务并发执行遇到的问题2.2 SQL标准中的四种隔离级别2.3 MySQL中支持的四种隔离级别 三、MVCC3.1 版本链3.2 ReadView3.2.1 READ COMMITTED...
    99+
    2023-08-16
    mysql 数据库 数据库开发 大数据 数据库架构
  • python包中的sched事件调度器怎么用
    本篇内容主要讲解“python包中的sched事件调度器怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python包中的sched事件调度器怎么用”吧!一、延迟运行事件在一个延迟或规定时间...
    99+
    2023-06-30
  • React的事件处理你了解吗
    目录一、React的事件处理1、与DOM事件处理的不同之处(1)React事件的命名方式:小驼峰方式,DOM的命名方式是小写(2)事件处理函数是以对象的方式赋值,而不是以字符串的方式...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作