MySQL job 定时任务

发布时间:2023年12月18日

目录

介绍

优点:

缺点:

使用场景:

案例

创建表

?-- 创建定时任务?? ?每一分钟插入一条数据

执行结果

-- 查询定时任务?? ?ENABLED--启用?? ?DISABLED--禁用

-- 查询定时任务

-- 启用定时任务

?-- 禁用定时任务

?-- 删除定时任务

?-- 创建存储过程?? ?

-- 创建定时任务3分钟执行一次存储过程

执行结果

-- 查看存储过程

-- 删除存储过程


介绍

MySQL Job是MySQL数据库中的一种定时任务管理工具,它允许用户在指定的时间间隔内自动执行SQL语句或存储过程。

优点:


1. 简单易用:MySQL Job提供了简单的语法和命令,使得用户可以轻松创建和管理定时任务。
2. 灵活性:用户可以根据自己的需求设置任务的执行时间、频率和执行内容,满足不同的业务需求。
3. 可靠性:MySQL Job具有良好的稳定性和可靠性,可以确保任务按时执行,并提供了错误处理和日志记录功能。

缺点:


1. 依赖于MySQL数据库:MySQL Job只能在MySQL数据库中使用,对于其他数据库系统不适用。
2. 单点故障:如果MySQL服务器发生故障或重启,可能会导致定时任务的中断或延迟执行。
3. 限制性:MySQL Job的功能相对简单,对于复杂的定时任务需求可能无法满足。

使用场景:


1. 数据备份和同步:可以使用MySQL Job定时执行备份和同步任务,确保数据的安全性和一致性。
2. 数据清理和维护:可以定时清理过期数据、优化数据库性能、更新统计信息等。
3. 数据报表生成:可以定时生成数据报表,提供给相关人员查看和分析。
4. 数据导入和导出:可以定时执行数据导入和导出任务,实现数据的迁移和交换。

案例

-- 创建一个名为t_mysql_job的表
- id:任务ID,自增主键
- job_name:任务名称
- job_description:任务描述
- job_status:任务状态(0表示未执行,1表示已执行)
- create_time:任务创建时间
- update_time:任务更新时间

创建表
CREATE TABLE t_mysql_job (
? id INT AUTO_INCREMENT PRIMARY KEY,
? job_name VARCHAR(50) NOT NULL,
? job_description VARCHAR(100),
? job_status INT DEFAULT 0,
? create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
? update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
?-- 创建定时任务?? ?每一分钟插入一条数据
CREATE EVENT daily_job
ON SCHEDULE EVERY 1 MINUTE
-- 从什么时候开始计时
STARTS SYSDATE()
DO
-- 在这里编写定时任务的逻辑代码
INSERT INTO t_mysql_job (job_name, job_description) VALUES ('Daily Job', 'This is a daily job');
执行结果

-- 查询定时任务?? ?ENABLED--启用?? ?DISABLED--禁用
SELECT T.STATUS,T.* FROM information_schema.EVENTS T WHERE EVENT_NAME = 'daily_job';

-- 查询定时任务
SHOW EVENTS where name = 'daily_job';


-- 启用定时任务
ALTER EVENT daily_job ENABLE;



-- 禁用定时任务

ALTER EVENT daily_job DISABLE;


-- 删除定时任务
DROP EVENT daily_job;


?-- 创建存储过程?? ?
-- 在MySQL中,创建存储过程时需要使用`DELIMITER`语句来更改分隔符
DELIMITER //
CREATE PROCEDURE ps_insert_mysql_job()
BEGIN
? ? INSERT INTO t_mysql_job (job_name, job_description) VALUES ('ps_insert_mysql_job', 'This is a daily job');
END //
DELIMITER ;

-- 创建定时任务3分钟执行一次存储过程

CREATE EVENT IF NOT EXISTS my_event
ON SCHEDULE EVERY 3 MINUTE
STARTS SYSDATE()
DO
? ? CALL ps_insert_mysql_job;
执行结果

-- 查看存储过程
SHOW PROCEDURE STATUS WHERE NAME = 'ps_insert_mysql_job';


-- 删除存储过程
DROP PROCEDURE IF EXISTS ps_insert_mysql_job;

文章来源:https://blog.csdn.net/weixin_59383491/article/details/135066128
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。