`

mysql event的用法

阅读更多

MySQL从5.1开始支持event功能,类似oracle的job功能。有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作系统提供的定时器的支持了。如linux crontab功能。

  创建测试表

  CREATE TABLE t

  (

  v VARCHAR(100) NOT NULL

  ) ENGINE INNODB DEFAULT CHARSET=utf8;

  创建定时器调用的存储过程

  DELIMITER $$

  DROP PROCEDURE IF EXISTS e_test $$

  CREATE PROCEDURE e_test()

  BEGIN

  INSERT INTO t VALUES('1');

  END $$

  DELIMITER ;

  要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1

  -- 查看是否开启定时器

  SHOW VARIABLES LIKE '%sche%';

  -- 开启定时器 0:off 1:on

  SET GLOBAL event_scheduler = 1;

  -- 创建事件

  --每隔一秒自动调用e_test()存储过程

  CREATE EVENT IF NOT EXISTS event_test

  ON SCHEDULE EVERY 1 SECOND

  ON COMPLETION PRESERVE

  DO CALL e_test();

  -- 开启事件

  ALTER EVENT event_test ON

  COMPLETION PRESERVE ENABLE;

  -- 关闭事件

  ALTER EVENT event_test ON

  COMPLETION PRESERVE DISABLE;

  SELECT * FROM t;

  一些例子:

  从现在开始每隔九天定时执行

  CREATE EVENT EVENT1

  ON SCHEDULE EVERY 9 DAY STARTS NOW()

  ON COMPLETION PRESERVE ENABLE

  DO

  BEGIN

  CALL TOTAL();

  END

  每个月的一号凌晨1 点执行

  CREATE EVENT EVENT2

  ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)

  ON COMPLETION PRESERVE ENABLE

  DO

  BEGIN

  CALL STAT();

  END

  每个季度一号的凌晨2点执行

  CREATE EVENT TOTAL_SEASON_EVENT

  ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()),'-',ELT(QUARTER(CURDATE()),1,4,7,10),'-',1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)

  ON COMPLETION PRESERVE ENABLE

  DO

  BEGIN

  CALL SEASON_STAT();

  END

  每年1月1号凌晨四点执行

  CREATE EVENT TOTAL_YEAR_EVENT

  ON SCHEDULE EVERY 1 YEAR STARTS DATE_ADD(DATE(CONCAT(YEAR(CURDATE()) + 1,'-',1,'-',1)),INTERVAL 4 HOUR)

  ON COMPLETION PRESERVE ENABLE

  DO

  BEGIN

  CALL YEAR_STAT();

  END

分享到:
评论

相关推荐

    解决mysql failed to open table mysql.event

    - 解决方法:使用`chown`命令改变文件所有者,如`chown mysql:mysql /var/lib/mysql/mysql/event.MYD`,确保所有MySQL相关文件属于`mysql`用户和组。再用`chmod`命令调整权限,如`chmod 750 /var/lib/mysql/mysql/...

    mysql中event的用法详解

    总结,MySQL的Event是数据库自动化运维的重要工具,通过合理配置和使用,可以实现数据库的定时维护和自动化操作,减轻管理员的工作负担。但需要注意权限管理和主从同步的影响,确保系统的稳定运行。

    浅谈MySQL event 计划任务

    本文将深入探讨MySQL Event的使用,包括如何查看Event状态、设置时区、创建和管理Event。 首先,确认MySQL Event 是否已经开启。可以运行以下SQL查询: ```sql show variables like '%sche%'; ``` 如果`event_...

    mysql Event Scheduler: Failed to open table mysql.event

    MySQL中的事件调度器(Event Scheduler)是一个用于在指定时间执行特定任务的功能,它可以周期性地运行SQL语句或语句块,类似于触发器。然而,当事件调度器无法打开mysql.event表时,可能会遇到错误“Event ...

    详解MySQL用事件调度器Event Scheduler创建定时任务

    在MySql中,创建一个新的调度器使用CREATE EVENT,其语法规则如下: CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] ...

    ​MySQL语句-ALTER EVENT详细介绍.pdf

    ### MySQL中的ALTER EVENT详解 #### 一、概述 在MySQL中,`EVENT`是一种非常有用的数据库对象,...通过深入理解并熟练掌握`ALTER EVENT`的使用方法,用户可以更加高效地管理数据库任务,提高系统的稳定性和可维护性。

    MySQL数据库Event定时执行任务详解

    MySQL数据库Event定时执行任务详解是指 MySQL 数据库中使用 Event 功能来实现定时执行任务的方法。Event 是 MySQL 中的一种调度器,能够根据设定的时间间隔执行指定的 SQL 语句或存储过程。 在实际应用中,Event ...

    MySQL 安装常见问题

    #### 一、卸载MySQL的彻底方法 在尝试重新安装MySQL时,可能会遇到“Could not start the service MySQL. Error:0”的问题,这通常是由于旧版本的MySQL未被完全卸载导致的。为了彻底卸载MySQL,除了通过控制面板的...

    MYSQL权限不够解决办法

    在使用MySQL数据库的过程中,可能会遇到“权限不足”的错误提示,这通常是因为当前用户没有足够的权限来执行某些操作(如创建表、删除数据等)。本文将详细介绍如何解决MySQL权限不足的问题,并提供具体的解决方案。...

    老生常谈mysql event事件调度器(必看篇)

    建议不要将event_scheduler设置为DISABLED,因为它将无法启动事件调度器,需要通过修改配置文件或使用SQL语句将event_scheduler设置为ON或OFF。 创建事件的基本语法如下: ```sql CREATE EVENT [IF NOT EXISTS] ...

    KFC系列之 - Oracle DBA入门MYSQL(上)

    1. 使用rpm包安装MySQL 5.5:包括启动、关闭、重启MySQL服务的命令,这是最简单的安装方法,适合初学者快速部署。 - 启动命令:`service mysql start` - 关闭命令:`service mysql stop` - 重启命令:`service ...

    MySql完全卸载&远程连接配置

    ### MySQL远程连接配置方法 在实际应用中,我们经常需要让其他主机能够通过网络访问MySQL服务器,这就涉及到MySQL的远程连接配置。 #### 配置MySQL允许远程访问 1. **登录MySQL服务器**:首先确保你能够成功登录到...

    MySQL DBA深度学习笔记

    - `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL` #### 四、Linux环境下MySQL安装步骤 - **RPM安装方法**: - **检查已安装组件**: - 命令:`rpm -qa | grep -i mysql` ...

    我的总结:重新安装mysql最后出现startService未响应解决方法.docx

    在注册表中查找 MySQL 文件夹,可以使用 regedit 打开注册表,然后在 HKEY_LOCAL_MACHINE 目录上进行查找,查找结果将显示在左边栏中,然后可以删除对应的文件夹。 此外,还可以搜索 C 盘,删除 ApplicationData 和...

Global site tag (gtag.js) - Google Analytics