MySQL数据库定时任务脚本

今天遇到的业务为了减少服务器压力、提高性能、少写Java代码,所以需要写数据库定时脚本来完成。

一、查看定时器、打开定时器

-- 开启event
SET GLOBAL event_scheduler='ON';
-- 查看定时器
SHOW VARIABLES LIKE 'event_scheduler';
二、写存储过程供定时任务调用

DELIMITER
DROP PROCEDURE IF EXISTS 存储过程名_proce; -- 避免出错,如果有这个名字就删除
CREATE PROCEDURE 存储过程名_proce() -- 更新设备心跳状态存储过程
	BEGIN
		DECLARE t_error INTEGER DEFAULT 0;
		DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
			START TRANSACTION; -- 开启事务
				-- 定时脚本需要执行的SQL
				-- 这里写需要执行的SQL语句,如果不涉及到事务,去掉事务相关的代码
			IF t_error=1 THEN
				ROLLBACK;
			ELSE
				COMMIT;
			END IF;
		SELECT t_errot; -- 返回标识位的结果集	
	END;
DELIMITER;
三、写定时任务

DROP EVENT IF EXISTS 事件名称_event;
CREATE EVENT 事件名称_event -- 创建一个事件每60秒执行一次
	ON SCHEDULE EVERY 60 SECOND
	ON COMPLETION PRESERVE DISABLE
	DO CALL 存储过程名称_proce();
四、开启定时任务

-- 开启事件
ALTER EVENT 事件名称_event ON COMPLETION PRESERVE ENABLE;
五、到这里就完成了,一个完整的数据库脚本,直接运行即可。(亲测可用,已经跑在了我们数据库服务器上)。

 这里附上关闭事务和查看自己写的所有事务所需代码

-- 关闭事件
-- ALTER EVENT 事件名称_event ON COMPLETION PRESERVE DISABLE;
-- 查看自己创建的event
-- SELECT * FROM mysql.`event`;
六、我们学的更多的是解决问题的能力。本文参考了两篇博客,这里分享给大家。

https://www.cnblogs.com/pengzijun/p/6929949.html

http://blog.csdn.net/lishaojun0115/article/details/50386425


  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值