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的event和Oralce的Job还是有点不同的,这点让笔者比较困扰
在进行按月,季,年进行自动调用存储过程 时,为了测试可以 把系统改为年的最后一天,如2010-12-31 23:59:55;
这个Oracle的Job就会把月,季,年存储过程执行一遍。但MySQL改了系统时间了Event也没有定时执行。不知道各位大虾有没有什么好办法?可以解决这个问题。
分享到:
相关推荐
MySQL定时器EVENT是一种非常实用的功能,它允许数据库管理员在预设的时间执行特定的任务,比如定期备份、清理过期数据或执行维护操作。在MySQL中,EVENTs被设计为数据库级别的对象,可以在不需要用户干预的情况下...
下面是学习 MySQL 定时器的知识点: 什么是 MySQL 定时器? MySQL 定时器是 MySQL 中的一种事件机制,可以在指定的时间间隔内执行特定的任务。它可以用来执行存储过程、触发器、函数等,非常适合需要定期执行的...
针对“Mysql定时器清空3天以前的数据”的主题,我们将深入探讨如何在MySQL数据库中设置定时任务,以便自动删除3天前的数据。这通常涉及到两个主要概念:事件调度器(Event Scheduler)和SQL语句来清除数据。 首先,...
MySQL定时器是数据库管理系统中的一个重要特性,它允许用户在预设的时间点或间隔执行特定的SQL操作,如数据更新、备份或清理等。这在自动化维护、数据分析和业务流程中非常有用。以下将详细介绍如何在MySQL中开启...
MySQL中的Event是数据库管理系统提供的一种时间触发机制,它允许用户安排一次或定期执行SQL语句或存储过程。从MySQL 5.1版本开始引入,Event主要用于处理那些需要按时间规律执行的任务,比如定期备份、清理过期数据...
1、查看定时器evevt功能是否关闭 show variables like 'event_scheduler' 2、开启定时器 SET GLOBAL event_scheduler = 1; 或者:SET GLOBAL event_scheduler = 'no'; 3、创建一张测试表 drop ...
- **创建定时器**: `create event 事件名 on schedule at '2023-09-01 12:00:00' do begin ... end;` - **定时器用途**: 可以用于定期备份数据库、清理日志等任务。 **5. 主从复制(Master-Slave Replication)** - ...
这里介绍的是用MySQL 建立一个定时器Event,定期清除掉之前的不必要事件。 二、内容 #1、建立存储过程供事件调用 delimiter// drop procedure if exists middle_proce// create procedure middle_proce() begin ...
本主题将深入探讨“定时器所采用到的数据库”,尤其是结合MySQL的InnoDB存储引擎,来阐述如何利用数据库来支持定时任务的执行。 定时器在系统中广泛用于执行计划的任务,例如备份、清理过期数据、发送通知等。它们...
MySQL中的存储过程和事件(Event)是数据库管理系统中两种非常重要的功能,它们允许开发者执行复杂的逻辑和自动化任务。在这个例子中,我们将详细讨论如何利用存储过程和事件来创建一个定时执行的任务。 首先,我们...
MySQL中的事件调度器(Event Scheduler)是一个强大的工具,它允许用户创建定时任务,这些任务可以在预设的时间点执行或者按照固定的间隔重复执行。这个功能自MySQL 5.1.6版本开始引入,为数据库管理和自动化提供了极...
MySQL的Event Scheduler功能正好满足这种需求。 配置MySQL的Event Scheduler是实现定时任务的第一步。默认情况下,此功能可能是关闭的,可以通过以下SQL查询来检查其状态: ```sql SHOW VARIABLES LIKE '%event_...
8. **MySQL定时器开启、调用实现代码** 9. **mysql自动定时备份数据库的最佳方法(windows服务器)** 10. **mysql 让一个存储过程定时作业的代码** 11. **mysql 定时任务的实现与使用方法示例** 这些文章将提供更深入...
在Linux环境下,实现MySQL定时任务通常有两种方法:一种是通过MySQL自身的Event Scheduler,另一种是利用Linux的cron定时器。这两种方式各有特点,可以根据实际需求和环境选择合适的方法。 一、MySQL Event ...
首先,我们需要确认MySQL的事件调度器(Event Scheduler)是否已经开启。可以通过以下三种查询方式检查: 1. 使用`SHOW VARIABLES LIKE 'event_scheduler';` 2. 执行`SELECT @@event_scheduler;` 3. 查看`SHOW ...
9. **QTimer和定时器事件(QTimer and Timer Events)**:定时器允许你在特定时间间隔执行任务,比如更新UI或执行后台工作。 10. **QWebView和QWebEngineView**:用于在应用程序中嵌入网页内容,QWebView基于旧的...