我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql定时器event详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql定时器event详解

一. 事件简介


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


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


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


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

    2.2 缺点
    定时触发,不可以调用。

三. 创建事件

查看是否开启evevt与开启evevt。
MySQL evevt功能默认是关闭的,可以使用下面的语句来看evevt的状态,如果是OFF或者0,表示是关闭的。


mysql> show VARIABLES LIKE 'event_schedu%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | OFF   |
+-----------------+-------+
1 row in set (0.00 sec)


开启event功能:
mysql> SET GLOBAL event_scheduler = 1;
Query OK, 0 rows affected (0.00 sec)


mysql> show VARIABLES LIKE 'event_schedu%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+
1 row in set (0.00 sec)


创建event举例:
mysql> use test-_T
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A


Database changed


先创建存储过程:
mysql> delimiter //
mysql> create procedure del_proc()
    -> begin
    -> INSERT INTO req(entname) SELECT t.`NAME` FROM (SELECT NAME, min(ZCSJ) AS mydate FROM test-_T.t_user_sign GROUP BY NAME) t WHERE t.mydate > NOW() - 36 * 60 * 1000 and t.`NAME` not in(SELECT entname from req);
    -> UPDATE req SET `STATUS` = '0' where `STATUS` is null;
    -> end
    -> //
Query OK, 0 rows affected (0.00 sec)


执行存储过程的内容:
mysql> call del_proc();
    -> //
Query OK, 2 rows affected, 1 warning (0.29 sec)




创建事件deldata_event(其作用:每隔一分钟自动调用del_proc()存储过程的内容)
mysql> create event deldata_event
    -> on schedule every 1 minute
    -> on completion preserve disable
    -> do call del_proc();
    -> //
Query OK, 0 rows affected (0.00 sec)


mysql>
mysql>


开启事件deldata_event
mysql> alter event deldata_event on completion preserve enable;
    -> //
Query OK, 0 rows affected (0.00 sec)




关闭事件deldata_event
mysql>alter event deldata_event on completion preserve disable;




查看自己创建的event:


mysql> select * from  mysql.event;
+--------------+---------------+-----------------+---------+------------+----------------+----------------+---------------------+---------------------+---------------------+---------------------+------+---------+---------------+--------------------------------------------+---------+------------+-----------+----------------------+----------------------+-----------------+-----------------+
| db           | name          | body            | definer | execute_at | interval_value | interval_field | created             | modified            | last_executed       | starts              | ends | status  | on_completion | sql_mode                                   | comment | originator | time_zone | character_set_client | collation_connection | db_collation    | body_utf8       |
+--------------+---------------+-----------------+---------+------------+----------------+----------------+---------------------+---------------------+---------------------+---------------------+------+---------+---------------+--------------------------------------------+---------+------------+-----------+----------------------+----------------------+-----------------+-----------------+
| Test-_T      | deldata_event | call del_proc() | mdba@%  | NULL       |              1 | MINUTE         | 2017-05-09 10:21:57 | 2017-05-09 10:22:11 | 2017-05-09 02:24:57 | 2017-05-09 02:21:57 | NULL | ENABLED | PRESERVE      | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |         |         15 | SYSTEM    | utf8                 | utf8_general_ci      | utf8_general_ci | call del_proc() |
+--------------+---------------+-----------------+---------+------------+----------------+----------------+---------------------+---------------------+---------------------+---------------------+------+---------+---------------+--------------------------------------------+---------+------------+-----------+----------------------+----------------------+-----------------+-----------------+
1 row in set (0.00 sec)

MySQL中查看Event的执行情况


通过执行如下的语句:

SELECT * FROM information_schema.EVENTS;

例如:
mysql> SELECT * FROM information_schema.events \G
*************************** 1. row ***************************
       EVENT_CATALOG: def
        EVENT_SCHEMA: ixinnuo_sjcj
          EVENT_NAME: deldata_event
             DEFINER: mdba@%
           TIME_ZONE: SYSTEM
          EVENT_BODY: SQL
    EVENT_DEFINITION: call del_proc()
          EVENT_TYPE: RECURRING
          EXECUTE_AT: NULL
      INTERVAL_VALUE: 1
      INTERVAL_FIELD: MINUTE
            SQL_MODE: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
              STARTS: 2017-05-09 10:21:57
                ENDS: NULL
              STATUS: ENABLED
       ON_COMPLETION: PRESERVE
             CREATED: 2017-05-09 10:21:57
        LAST_ALTERED: 2017-05-09 10:22:11
       LAST_EXECUTED: 2017-05-11 08:43:57
       EVENT_COMMENT:
          ORIGINATOR: 15
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
  DATABASE_COLLATION: utf8_general_ci
1 row in set (0.00 sec)

可以看到相应的库中的作业信息,其中LAST_EXECUTED字段会反映出相应的作业最近一次的执行时间

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql定时器event详解

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

下载Word文档

猜你喜欢

MySQL定时任务EVENT事件的使用方法

目录一、查看定时策略是否开启二、创建定时任务 三、定时任务操作四、定时规则一、查看定时策略是否开启show variables like '%event_scheduler%'; * on这里是启用的查看进程:会看到一个用户为event
2023-05-25

一文详解JavaScript定时器

定时器就是可以定时一段时间后执行某些功能,或者每隔一段时间重复执行某些功能。

详解TCP的四种定时器

详解TCP的四种定时器 在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的。在TCP中,会有四种定时器: (1)重传定时器 (2)坚持定时器 (3)保活定时器 (4) 时间
2022-06-04

Flowable中定时器的玩法详解

这篇文章主要为大家详细介绍了Flowable中定时器的各种玩法,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起了解一下
2022-11-13

JavaScript定时器setTimeout、setInterval使用详解

网站开发过程中经常会用到各种各样的定时任务,这时我们会用到setTimeout和setInterval方法,下面这篇文章主要给大家介绍了关于JavaScript定时器setTimeout、setInterval使用的相关资料,需要的朋友可以参考下
2023-05-17

navicat创建MySql定时任务的方法详解

navicat创建MySql 定时任务详解 事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。事件和触发器类似,都是在某些事情发生
2022-05-31

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

MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序。 EVENT由其名称和所在的schema唯一标识。 EVENT根据计划执行特定操作。操作由SQL语句组成,语句可以是BEGIN…
2022-05-30

Java定时任务详解

定时任务在项目中经常会使用到,本文主要根据博主自己使用定时的经验分如下几点介绍定时任务:1、Quartz定时任务简介及Spring配置Quartz定时任务2、SchedulerFactory对定时任务进行增删改查3、总结Quartz定时任务
2023-05-31

编程热搜

目录