• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 详解MySQL新增的功能(事件调度器)实例

详解MySQL新增的功能(事件调度器)实例

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL,事件调度器,功能等相关知识,希望本文的分享对您有所帮助

概述

事件调度器是MySQL5.1后新增的功能,可以将数据库按自定义的时间周期触发某种操作,可以理解为时间触发器,类似于linux系统下面的任务调度器crontab,或者类似与window下面的计划任务。值得一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。

查看事件功能是否开启

在使用事件这个功能,首先要保证你的mysql的版本是5.1以上,然后还要查看你的mysql服务器上的事件是否开启。
查看事件是否开启,使用如下命令查看:

#方式一
SHOW VARIABLES LIKE 'event_scheduler';
#方式二
SELECT @@event_scheduler;
#方式三
SHOW PROCESSLIST;

#查看事件状态
SHOW EVENTS;

如果看到event_scheduler为on或者PROCESSLIST中显示有event_scheduler的信息说明就已经开启了事件。如果显示为off或者在PROCESSLIST中查看不到event_scheduler的信息,那么就说明事件没有开启,我们需要开启它。

开启事件功能

方式一、通过动态参数修改

SET GLOBAL event_scheduler = ON;

更改完这个参数就立刻生效了,但是重启mysql又还原了,即设置不能跨重启。
方式二、更改配置文件然后重启
在my.cnf中的[mysqld]部分添加如下内容,然后重启mysql。

event_scheduler=ON;

一劳永逸,需要能够修改数据库配置的权限。

方式三、直接在启动命令加上“–event_scheduler=1”

mysqld ... --event_scheduler=ON

事件的语法

1. 创建事件

CREATE
    [DEFINER = { user | CURRENT_USER }]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'comment']
    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}

DEFINER: 定义事件执行的时候检查权限的用户。
ON SCHEDULE schedule: 定义执行的时间和时间间隔。
ON COMPLETION [NOT] PRESERVE: 定义事件是一次执行还是永久执行,默认为一次执行,即NOT PRESERVE。
ENABLE | DISABLE | DISABLE ON SLAVE: 定义事件创建以后是开启还是关闭,以及在从上关闭。如果是从服务器自动同步主上的创建事件的语句的话,会自动加上DISABLE ON SLAVE。
COMMENT 'comment': 定义事件的注释。

2. 更改事件

ALTER
    [DEFINER = { user | CURRENT_USER }]
    EVENT event_name
    [ON SCHEDULE schedule]
    [ON COMPLETION [NOT] PRESERVE]
    [RENAME TO new_event_name]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'comment']
    [DO event_body]

3. 删除事件的语法

DROP EVENT [IF EXISTS] event_name;

事件使用举例

1. 创建事件

举例一
定时每隔3秒向表test2中插入数据

create event event_insert_t2
on schedule every 3 second
on completion preserve
do insert into test2(department,time_v) value('1',now());

执行结果


事件执行结果

举例二
创建一个10分钟后清空test表数据的事件

CREATE EVENT IF NOT EXISTS event_truncate_test2
ON SCHEDULE
AT CURRENT_TIMESTAMP + INTERVAL 10 MINUTE
DO TRUNCATE TABLE test2;

举例三
创建一个在2015-04-17 14:42:00时刻清空test表数据的事件

DROP EVENT IF EXISTS event_truncate_test2;
CREATE EVENT event_truncate_test2
ON SCHEDULE
AT TIMESTAMP '2015-04-17 14:42:00'
DO TRUNCATE TABLE test2;

举例四
5天后开启每天定时3秒向表test2中插入数据,一个月后停止执行

CREATE EVENT IF NOT EXISTS event_truncate_test2
ON SCHEDULE EVERY 3 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 5 day
ENDS CURRENT_TIMESTAMP + INTERVAL  1 month
ON COMPLETION PRESERVE
DO INSERT INTO test2(department,time_v) VALUES('1',NOW());

修改事件举例

举例一
临时关闭事件

alter event event_insert_t2 disable;

其他类似创建事件。

删除事件举例

DROP EVENT IF EXISTS event_insert_t2;

事件调用存储过程或函数如同普通调用。

事件的优缺点及应用场景

  1. 优点

  2. 定时任务由dba统一管理,避免部署在操作系统层。

  3. 减少系统管理员产生误操作的风险。

  4. 有利于后续的管理和维护。

  5. 缺点

  6. 在繁忙且要求性能的数据库上慎重部署和启用调度器。

  7. 过于复杂的处理更适合使用程序实现。

  8. 开启和关闭事件需要具有超级用户权限。

  9. 应用场景
    适用于定期收集统计信息,定期清除历史数据,定期数据库检查等等。

【相关推荐】

1. 免费mysql在线视频教程

2. MySQL最新手册教程

3. 布尔教育燕十八mysql入门视频教程

以上就是详解MySQL新增的功能(事件调度器)实例的详细内容,更多请关注微课江湖其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2017-05-11mysql中提高Order by语句查询效率的两个思路分析
  • 2018-12-05Jdbc--具体代码实现
  • 2018-12-05Redis源码解析3
  • 2018-12-05实例详解Mysql中的join操作的使用教程
  • 2018-12-05 MySQL提数据高分页效率
  • 2018-12-05sqlserver中在指定数据库的所有表的所有列中搜索给定的值
  • 2018-12-05mysql字段类型选择方法
  • 2018-12-05常用的五款云数据库
  • 2017-05-11内网ssh/mysql登录缓慢的解决方法
  • 2018-12-05mysql主从设置_MySQL

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 关于MySQL时常闪退的问题解决办法分享(图)
    • MYSQL的排序sql语句
    • MySQL数据库、表的管理,数据库的增删改查
    • MySQL WorkBench管理操作MySQL教程
    • mysql-cluster 使用介绍
    • SqlServer2005 数据库同步配置图文详解
    • 总结和Mysql相关的知识
    • mysql 字符集的系统变量说明
    • MySQL字符集是什么?字符集的相关介绍
    • sqlserver2008 拆分字符串

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有