博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
50.10. 事件调度器(EVENT)
阅读量:6337 次
发布时间:2019-06-22

本文共 4901 字,大约阅读时间需要 16 分钟。

50.10.1. 启用 EVENT

set GLOBAL event_scheduler=ON;

my.cnf 配置

event_scheduler=on

查看状态

mysql> select @@GLOBAL.event_scheduler;+--------------------------+| @@GLOBAL.event_scheduler |+--------------------------+| ON                       |+--------------------------+1 row in set (0.00 sec)mysql> SHOW VARIABLES LIKE 'event_scheduler';+-----------------+-------+| Variable_name   | Value |+-----------------+-------+| event_scheduler | ON    |+-----------------+-------+1 row in set (0.01 sec)

50.10.2. 创建 EVENT

DROP EVENT IF EXISTS `captcha`;DELIMITER //CREATE DEFINER=`neo`@`%` EVENT `captcha` ON SCHEDULE EVERY 5 MINUTE STARTS '2013-07-08 16:27:03' ON COMPLETION PRESERVE ENABLE DO BEGIN	delete from captcha where ctime < DATE_ADD(now(), INTERVAL -5 MINUTE);END//DELIMITER ;

50.10.3. 禁用/启用

ALTER EVENT captcha DISABLE;
ALTER EVENT captcha ENABLE;

50.10.4. show events

mysql> show events;+--------+-------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+| Db     | Name        | Definer | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends | Status  | Originator | character_set_client | collation_connection | Database Collation |+--------+-------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+| netkiller | captcha     | neo@%   | SYSTEM    | RECURRING | NULL       | 5              | MINUTE         | 2013-07-08 16:27:03 | NULL | ENABLED |          1 | utf8                 | utf8_general_ci      | utf8_general_ci    || netkiller | sms_ips_log | neo@%   | SYSTEM    | RECURRING | NULL       | '0 5'          | DAY_HOUR       | 2013-07-09 14:39:51 | NULL | ENABLED |          1 | utf8                 | utf8_general_ci      | utf8_general_ci    |+--------+-------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+2 rows in set (0.00 sec)mysql> show events \G;*************************** 1. row ***************************                  Db: netkiller                Name: captcha             Definer: neo@%           Time zone: SYSTEM                Type: RECURRING          Execute at: NULL      Interval value: 5      Interval field: MINUTE              Starts: 2013-07-08 16:27:03                Ends: NULL              Status: ENABLED          Originator: 1character_set_client: utf8collation_connection: utf8_general_ci  Database Collation: utf8_general_ci*************************** 2. row ***************************                  Db: netkiller                Name: sms_ips_log             Definer: neo@%           Time zone: SYSTEM                Type: RECURRING          Execute at: NULL      Interval value: '0 5'      Interval field: DAY_HOUR              Starts: 2013-07-09 14:39:51                Ends: NULL              Status: ENABLED          Originator: 1character_set_client: utf8collation_connection: utf8_general_ci  Database Collation: utf8_general_ci2 rows in set (0.00 sec)ERROR:No query specified

50.10.5. 实例·每月创建一个表

每月创建一张新表,适用于分表的场景

CREATE DEFINER=`neo`@`netkiller` EVENT `logging`	ON SCHEDULE		EVERY 1 MONTH STARTS '2017-12-11 15:51:00'	ON COMPLETION PRESERVE	ENABLE	COMMENT '每月自动创建表'DO BEGIN	declare _table_date varchar(10);	select date_format(date_add(curdate(),interval 1 month),'%Y%m') into _table_date;	call logging(_table_date);END
CREATE DEFINER=`neo`@`netkiller` PROCEDURE `logging`(	IN `table_date` VARCHAR(10))LANGUAGE SQLNOT DETERMINISTICCONTAINS SQLSQL SECURITY DEFINERCOMMENT ''BEGIN	set @_table_name = CONCAT('log_',table_date);	set @_create = "CREATE TABLE If Not Exists ";	set @_param = "(			`id` INT(11) NOT NULL AUTO_INCREMENT,			`type` VARCHAR(255) NULL DEFAULT NULL COMMENT '日志类型 1:网站 2:IOS 3:Android',			`url` VARCHAR(640) NULL DEFAULT NULL COMMENT '用户访问url',			`serverIp` VARCHAR(255) NULL DEFAULT NULL COMMENT '服务器ip',			`bodyBytesSent` VARCHAR(255) NULL DEFAULT NULL,			`bytesSent` VARCHAR(255) NULL DEFAULT NULL COMMENT '参数字节数',			`browser` VARCHAR(255) NULL DEFAULT NULL COMMENT '浏览器信息',			`ctime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,			`mtime` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,			PRIMARY KEY (`id`),			INDEX `ctime` (`ctime`, `deviceType`,`isFirst`),			INDEX `userIp` (`userIp`),			INDEX `deviceId` (`deviceId`),			INDEX `account` (`account`)		)		COMMENT='APP 访问记录'		COLLATE='utf8_general_ci'		ENGINE=InnoDB		;";		SET @sql = CONCAT(@_create,@_table_name,@_param);	PREPARE stmt FROM @sql;	EXECUTE stmt;	Deallocate prepare stmt;END

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

你可能感兴趣的文章
关于json与protobuf的材料
查看>>
tree -L n
查看>>
C语言 · 明明的随机数
查看>>
Java关键字final、static使用总结
查看>>
PHPWIND和DISCUZ什么区别?
查看>>
servlet监听器
查看>>
android电池(四):电池 电量计(MAX17040)驱动分析篇【转】
查看>>
开源OSS.Social微信项目进阶介绍
查看>>
vim详解
查看>>
sql查询与修改数据库逻辑文件名,移动数据库存储路径
查看>>
dpkg命令的用法
查看>>
Kibana安装(图文详解)(多节点的ELK集群安装在一个节点就好)
查看>>
算法笔记_118:算法集训之结果填空题集二(Java)
查看>>
Win10系列:UWP界面布局基础12
查看>>
蓝牙(CoreBluetooth)-概述
查看>>
使用delphi 10.2 开发linux 上的Daemon
查看>>
LA 5009 (HDU 3714) Error Curves (三分)
查看>>
5 -- Hibernate的基本用法 --4 8 外连接抓取属性
查看>>
【OpenGL 学习笔记01】HelloWorld演示样例
查看>>
EasyARM i.mx287学习笔记——通过modbus tcp控制GPIO
查看>>