在线结算、在线支付、自动到帐、自动上货、网购批发 专注服务中小企业 会员中心 | 设为首页 | 加入收藏 | 繁体中文
服务热线:400-6966-014 咨询
网站首页软件购买软件动态软件下载常见问题全网推广合作商招贤纳士关于我们媒体报道
栏目导航
新闻搜索
热门点击
联系我们
  • 网址:www.we0546.com
  • 邮箱:414787450@qq.com
  • 电话:4006966014
  • 地址:山东省东营市东营区西二路471号北海嘉园C座305号

  • 首页新闻中心  
     
    MySQL事件(event)
    来源:本站 点击数:1138次 更新时间:2023/3/6 3:03:22

    mysql中的event相当于SQL Server代理中的作业或者SQL Server管理中的维护计划,mysql中的event可以配合函数实现调用存储过程

    什么是事件?

    ➢ 事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。
    ➢ 事件调度器可以在指定的时刻执行某些特定的任务,并以此可取代原先只能由操作系统的计划任务来执行的工作。这些 在指定时刻才能被执行的任务就是事件,这些任务通常是一些确定的SQL语句集合。
    ➢ 事件和触发器相似,都是在某些事情发生的时候启动,因此事件也可称为 临时触发器。
    • 事件是基于 特定时间周期触发来执行某些任务。
    • 触发器是基于某个表所产生的

    ➢ MySQL事件也称为“时间触发器”,因为它们是由时间触发的。
    ➢ MySQL事件是包含一个或多个SQL语句的对象。 它们存储在数据库中并以一个或多个时间间隔执行。

    例如可以创建一个事件来统计表中的数据量,该事件在每天的5:00 AM运行。

    ➢ 简单理解,事件的代码相当于操作者规定一个时间去执行任务。事件代码包括两部分,一个是 安排时间,一个是 执行的内容


    创建事件

    ➢ MySQL事件在许多情况下非常有用,例如优化数据库表,清理日志,归档数据或 在非高峰时间生成复杂的报告。➢ 一条CREATE EVENT语句创建一个事件。每个事件由两个主要部分组成:

    事件调度eventschedule,表示事件何时启动以及按什么频率启动;

    事件动作(EVENT ACTION),即事件启动时执行的代码,事件的动作包含一条SQL语句,它可能是一个简单的INSERT或UPDATE语句,也可以使一个存储过程或者BEGIN...END语句块,这两种情况允许我们执行多条SQL

    1.查看事件调度器是否开启

    ➢ 事件由一个特定的线程来管理。启用事件调度器后,拥有SUPER权限的账户执行SHOW PROCESSLIST就可以看到这个线程了。➢ 示例:查看事件是否开启(以下均可):

    SHOW variables like 'event_scheduler';

    select @@event_scheduler;

    show processlist;

    2.开启或关闭事件调度器

    ➢ 通过设定全局变量event_scheduler的值即可动态的控制事件调度器是否启用。开启MySQL的事件调度器,可以通过下面两种方式实现。只有开启事件调度器才能使事件可用。 (1)通过设置全局参数

    开启事件调度器

    set global event_scheduler = on;

    关闭事件调度器

    set global event_scheduler=off;


    3.创建事件

    ➢ 一个事件可以是 活动(打开)的或 停止(关闭)的,活动意味着事件调度器检查事件动作是否必须调用,停止意味着事件的声明存储在目录中,但调度器不会检查它是否应该调用。➢ 在一个事件创建之后,它立即变为活动的,一个活动的事件可以执行一次或者多次



     



     

    常用的时间间隔示例:

    #(1)每隔10秒钟执行
    ON SCHEDULE EVERY 10 SECOND
    #(2)每隔10分钟执行
    ON SCHEDULE EVERY 10 MINUTE
    #(3)每天凌晨5点执行
    ON SCHEDULE EVERY 1 DAY
    STARTS DATE_ADD(DATE_ADD(CURDATE(),INTERVAL 1 DAY), INTERVAL 5 HOUR)
    #(4)每隔3个月执行,从现在起2周后开始
    ON SCHEDULE EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + 2 WEEK
    #(5)每隔3小时执行,从现在起10分钟后开始,1个星期后结束
    ON SCHEDULE EVERY 3 HOUR
    STARTS CURRENT_TIMESTAMP + INTERVAL 10 MINUTE
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 WEEK
    #(6)在2022-06-30晚上9点执行
    ON SCHEDULE AT '2022-06-30 21:00:00’
    示例:创建一个事件5秒执行一次,统计student表的数量并把统计数量插入event_sum表

    CREATE EVENT IF NOT EXISTS testevent
    ON SCHEDULE EVERY 10 SECOND -- 5秒执行一次
    STARTS CURRENT_TIMESTAMP -- 现在开始,1分钟后结束
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
    ON COMPLETION PRESERVE -- 执行完后不删除事件
    COMMENT '测试' -- 备注
    DO BEGIN
    CREATE TABLE IF NOT EXISTS event_sum(sums INT, times TIMESTAMP);
    INSERT INTO event_sum(sums) VALUES
    ((SELECT count(*) FROM student));
    END;
    #查看事件是否成功执行
    SELECT * FROM event_sum;

    4.查看和删除事件

    #查询数据库所有创建的事件
    SELECT * FROM information_schema.events;
    #启用事件
    ALTER EVENT testevent ENABLE;
    #关闭事件
    ALTER EVENT testevent DISABLE;
    #查看创建事件的代码
    SHOW CREATE EVENT testevent;
    #删除事件
    DROP EVENT testevent;

    【刷新页面】【加入收藏】【打印此文】 【关闭窗口】
    上一篇:在MySQL数据库中,这4种方式可以避免重复的插入数据 下一篇:mysql中concat函数
     

      友情链接
    腾讯企业QQ招商银行金山360工商银行支付宝财付通
    快递查询东营招聘网绿色软件下载软件盒子天空下载西西软件园太平洋电脑网天极下载多多软件站
    好特下载飞翔下载泡泡网下载ECSHOP非凡软件站ZOL分流下硅谷动力豆豆网it168下
    广告服务 | 联系我们 | 关于我们 | 版权声明 | 友情链接
    Copyright 2009 - 2010 Powered By Zhirui Ver 3.6.5 鲁ICP备13019314号
    邮件:414787450@qq.com 电话:4006966014  地址:山东省东营市东营区西二路471号北海嘉园C座305号  法律顾问:山东众成仁和律师事务所