Mysql数据库设置定时任务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 最近手头在做一个拍卖的电商项目。中间需要将到点的拍卖会状态设置为进行中。我们的解决方案是Mysql的定时器任务,这里进行一个简单的总结。 1.使用范围不是所有的MySQL版本都支持,Mysql 5.

最近手头在做一个拍卖的电商项目。

中间需要将到点的拍卖会状态设置为进行中。

我们的解决方案是Mysql的定时器任务,这里进行一个简单的总结。

 

1.使用范围

不是所有的MySQL版本都支持,Mysql 5.1之后才开始支持的新特性

 

 

2.涉及到的mysql的语法

#查询MySQL计划任务支持是否开启  

show variables like '%sche%';  

 

#开启MySQL计划任务支持  

SET GLOBAL event_scheduler = ON;  

SET @@global.event_scheduler = ON;  

SET GLOBAL event_scheduler = 1;  

SET @@global.event_scheduler = 1;  

  

#关闭MySQL计划任务支持  

SET GLOBAL event_scheduler = OFF;  

SET @@global.event_scheduler = OFF;  

SET GLOBAL event_scheduler = 0;  

SET @@global.event_scheduler = 0;  

  

#如果计划任务存在,则删除计划任务  

DROP EVENT IF EXISTS testInsert;  

  

#创建计划任务  

CREATE EVENT IF NOT EXISTS testInsert  

ON SCHEDULE EVERY 3 SECOND  

ON COMPLETION PRESERVE   

DO INSERT INTO aa(`name`,sex) VALUES('aa',2),('bb',1);  

  

#开启计划任务  

ALTER EVENT testInsert ENABLE;  

  

#关闭计划任务  

ALTER EVENT testInsert DISABLE;  

 

#查询MySQL计划任务支持是否开启  

show variables like '%sche%';  

  

#开启MySQL计划任务支持  

SET GLOBAL event_scheduler = ON;  

SET @@global.event_scheduler = ON;  

SET GLOBAL event_scheduler = 1;  

SET @@global.event_scheduler = 1;  

  

#关闭MySQL计划任务支持  

SET GLOBAL event_scheduler = OFF;  

SET @@global.event_scheduler = OFF;  

SET GLOBAL event_scheduler = 0;  

SET @@global.event_scheduler = 0;  

  

#如果计划任务存在,则删除计划任务  

DROP EVENT IF EXISTS testInsert;  

  

#创建计划任务  

CREATE EVENT IF NOT EXISTS testInsert  

ON SCHEDULE EVERY 3 SECOND  

ON COMPLETION PRESERVE   

DO INSERT INTO aa(`name`,sex) VALUES('aa',2),('bb',1);  

  

#开启计划任务  

ALTER EVENT testInsert ENABLE;  

  

#关闭计划任务  

ALTER EVENT testInsert DISABLE;  

 

 

 

最后,给一个完整的测试用例。

mysql定时器是系统给提供了event,下面创建表:
create table mytable (
id int auto_increment not null,
name varchar(100) not null default '',
introduce text not null,
createtime timestamp not null,
constraint pk_mytable primary key(id)
)


创建存储过程,这里的存储过程主要提供给mysql的定时器event来调用去执行:
create procedure mypro()
BEGIN
insert into mytable (name,introduce,createtime) values ('1111','inner mongolia',now());
end;
这里只是简单的写了一下,只是为了说明例子。


紧接着创建mysql的定时器event
create event if not exists eventJob 
on schedule every 1 second
on completion PRESERVE
do call mypro();
这里设置为每一秒执行一次


至此所有的准备工作已经写完了,做完这些,mysql要想利用定时器必须的做准备工作,就是把mysql的定时器给开启了:
SET GLOBAL event_scheduler = 1;  -- 启动定时器
SET GLOBAL event_scheduler = 0;  -- 停止定时器


紧接着还要开启事件:
ALTER EVENT eventJob ON  COMPLETION PRESERVE ENABLE;   -- 开启事件
ALTER EVENT eventJob ON  COMPLETION PRESERVE DISABLE;  -- 关闭事件


SHOW VARIABLES LIKE '%sche%'; -- 查看定时器状态


至此,你去数据库里面的表mytable里面看下,系统会每隔一秒去插入一条数据,嘻嘻,任务完成了。
select * from mytable

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
人工智能 运维 Java
SpringBoot+MySQL实现动态定时任务
这是一个基于Spring Boot的动态定时任务Demo,利用spring-context模块实现任务调度功能。服务启动时会扫描数据库中的任务表,将任务添加到调度器中,并通过固定频率运行的ScheduleUpdater任务动态更新任务状态和Cron表达式。核心功能包括任务的新增、删除与Cron调整,支持通过ScheduledFuture对象控制任务执行。项目依赖Spring Boot 2.2.10.RELEASE,使用MySQL存储任务信息,包含任务基类ITask及具体实现(如FooTask),便于用户扩展运维界面以增强灵活性。
239 10
|
2月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
123 13
|
2月前
|
SQL 关系型数据库 MySQL
如何创建RDS MySQL定时任务?
RDS MySQL支持通过事件调度器(Event Scheduler)实现定时任务,如数据清理、统计报告等。需先开启Event Scheduler,再通过DMS或SQL创建、查看、删除事件,自动化执行数据库操作,提升运维效率。
|
3月前
|
NoSQL 关系型数据库 MySQL
在Visual Studio Code中设置MySQL源码调试环境
以上步骤涵盖了在VS Code中设置MySQL源码调试环境的主要过程,是一个相对高级的任务,旨在为希望建立强大开发和调试环境的开发者提供指引。遵循这些步骤,将可以利用VS Code强大的编辑和调试功能来深入理解和改进MySQL数据库的底层实现。
342 0
|
6月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
159 18
|
8月前
|
关系型数据库 MySQL 调度
如何在MySQL中创建定时任务?
MySQL 事件调度器(Event Scheduler)可实现定时任务自动化。例如,每天凌晨清空 `test` 表,并在一个月后自动停止任务。需先启用调度器(`SET GLOBAL event_scheduler = ON`),再创建事件(使用 `CREATE EVENT` 定义执行频率和操作)。推荐用 `TRUNCATE` 提高效率,注意权限与时区设置。为防数据丢失,可结合备份机制。到期后事件自动禁用,建议定期清理。
285 4
|
12月前
|
关系型数据库 MySQL 数据库
MySQL事务隔离级别及默认隔离级别的设置
在数据库系统中,事务隔离级别是一个关键的概念,它决定了事务在并发执行时如何相互隔离。MySQL提供了四种事务隔离级别,每种级别都解决了不同的并发问题。本文将详细介绍这些隔离级别以及MySQL的默认隔离级别。
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
689 3
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
980 2
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
164 1

热门文章

最新文章

推荐镜像

更多