mysql-常用组件之定时器
定时器主要用于定时的执行一次或者循环执行一条sql,在实际场景上,例如,定期清理数据表,定期导出日志文件等等场景。本次公司晚上维护系统,晚上需要定期挂维护页,用到了定时器,这里简单总结一下。
启用定时器
MySQL event 功能默认是关闭的,可以使用下面的语句来看 event 的状态,如果是 OFF 或者 0,表示是关闭的。
- 检查命令
SHOW VARIABLES LIKE 'event_scheduler';
- 定时器已经开启的执行结果:

如果未开启定时器,执行以下命令开启定时器:
SET GLOBAL event_scheduler = 1;
- 注意:虽然这里用
set global event_scheduler = on语句开启了事件,但是每次重启服务器或重启 mysql 服务后,事件会自动关闭(event_scheduler=OFF),所以想让事件一直保持开启,最好修改配置文件,让 mysql 服务启动的时候开启时间,只需要在my.cnf配置文件的[mysqld]部分加上event_scheduler=ON即可:

- 关闭定时器命令:
SET GLOBAL event_scheduler = 0;
创建定时器
创建定时器 SQL 模板:
DELIMITER $$
-- SET GLOBAL event_scheduler = ON$$ -- required for event to execute but not create
CREATE /*[DEFINER = { user | CURRENT_USER }]*/ EVENT `dbName`.`eventName` -- 事件名
ON SCHEDULE
/* uncomment the example below you want to use */
-- scheduleexample 1: run once 只执行一次
-- AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
-- scheduleexample 2: run at intervals forever after creation 创建完后周期性执行
-- EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
-- scheduleexample 3: specified start time, end time and interval for execution 指定开始和结束时间,并在期间内周期性的执行
/*EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }
ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] } */
/*[ON COMPLETION [NOT] PRESERVE] -- 时间完成后是否删除事件
[ENABLE | DISABLE] -- 是否立即生效
[COMMENT 'comment']*/
DO
BEGIN
(sql_statements) -- 需要周期性执行的 sql 语句
END$$
DELIMITER ;
- 注意:
DELIMITER $$这个是将mysql中以 ; 结尾的规定修改为以 $$ 为语句结束符,因为存储过程里可以有多条 sql 语句,里面的 sql 语句都以 ; 结尾,如果回车了那么系统会当做 sql 语句直接执行了,我们希望的是先定义这一系列 sql 语句而先不执行,所以要改下操作结束符。当然你在改后一定要改回来,大家可以看到最后一行有对应的修改回来的语句。如果需要周期性执行的语句也可用存储过程来代替,使用
DO CALL procedure()语句来代替。设置定时器事件的生效与否语句:
ALTER EVENT event_minute DISABLE; # 关闭事件
ALTER EVENT event_minute ENABLE; # 启用事件
举例
1.从现在开始每隔九天定时执行
ON SCHEDULE EVERY 9 DAY STARTS NOW() ;
2.每个月的一号凌晨 1 点执行
on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour);
3.每个季度一号的凌晨1点执行
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 1 hour);
mysql-常用组件之定时器的更多相关文章
- Docker Private Registry 常用组件
Docker Private Registry 常用组件 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Registry概述 1>.什么是registry ...
- Python常用组件、命令大总结(持续更新)
Python开发常用组件.命令(干货) 持续更新中-关注公众号"轻松学编程"了解更多. 1.生成6位数字随机验证码 import random import string def ...
- Mysql 常用 SQL 语句集锦
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- java基础 常用组件
几个常用组件: 在图形用户界面编程中,我们常常会提供用户登陆界面,比如登陆到会员管理系统,登陆到工资管理系统,仓库管理系统等,如下图我们就会用到: 1. 文本框(JTextField) 2. 密码框( ...
- MySQL常用命令和常见问题
MySQL常用命令和常见问题 --创建数据库并设置字符集 create database wip default character set utf8 collate utf8_general_ci; ...
- mysql常用基本操作
mysql常用操作 查看都有哪些库 show databases; 查看某个库的表 use 库名; show tables; 查看表的字段 desc 表名; 当前是哪个用户 select user() ...
- MySQL 常用的sql语句小结(待续)
mysql 常用的sql语句 1.查看数据库各个表中的记录数 USE information_schema; SELECT table_name,table_rows FROM tables WHER ...
- mysql常用操作语句
mysql常用操作语句 1.mysql -u root -p 2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- MySQL数据库3 - MySQL常用数据类型
一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的 ---> 数 ...
随机推荐
- 8.1 NOIP模拟11
8.1 NOIP模拟 11 今天上午返校之后,颓了一会,然后下午就开始考试,中午睡着了,然后刚开始考试的时候就困的一匹,我一看T1,woc,这不是之前线段树专题的题啊,和那道题差不多,所以我..... ...
- Docker 学习 | 基础命令
基本概念定义 基本组成 客户端/守护进程 C/S架构 本地/服务器 镜像 容器基石 只读文件系统 联合加载(union mount) 容器 通过镜像启动 执行 写时复制 仓库 公有 docker hu ...
- 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。
描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...
- 009-2010网络最热的 嵌入式学习|ARM|Linux|wince|ucos|经典资料与实例分析
前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到21ic和CSDN等论坛朋友们的支持和鼓励.当年学单片机的时候datasheet和学习资料基本都是在论坛上找到的,也遇到很多好心的高手朋友 ...
- Scrapy进阶知识点总结(六)——中间件详解
概述 查看scrapy官网的框架图,可以看出中间件处于几大主要组件之间,类似于生产流水线上的加工过程,将原料按照不同需求与功能加工成成品 其中4,5处于下载器与引擎之间的就是下载中间件,而spider ...
- 简单搭建syslog-ng server记录log
### 简单搭建syslog-ng server记录log 安装syslog-ng apt-get install syslog-ng 安装syslog-ng 配置syslog-ng vim /etc ...
- 为什么我加了索引,SQL执行还是这么慢(一)?
在MySQL中,有一些语句即使逻辑相同,执行起来的性能差异确实极大的. 先抛出一个结论:如果想使用索引树搜索功能,就不能使用数据库函数来处理索引字段值,而是在不改变索引字段值的同时,自己通过SQL语句 ...
- php imagick生成图片需要注意的问题
php imagick生成图片需要注意的问题 坐标必须写死不要写自适应 这样才能达到效果图的最好效果 而且不会出现各种问题如果前端显示的生成图片不达标 可以再写一套代码 把后台生成的图片透明度设成0 ...
- W5500
W5500 芯片是一款韩国全硬件TCP/IP协议栈以太网接口芯片, 最近发现我们国内也有和W5500 芯片一样芯片 介绍给大家 如下图 :
- 从静态代理,jdk动态代理到cglib动态代理-一文搞懂代理模式
从代理模式到动态代理 代理模式是一种理论上非常简单,但是各种地方的实现往往却非常复杂.本文将从代理模式的基本概念出发,探讨代理模式在java领域的应用与实现.读完本文你将get到以下几点: 为什么需要 ...