mysql数据库可以执行定时任务

news2024/11/17 1:54:35

在一些业务需要中,经常需要一些定时任务。如Java的schedule,nodejs的node-schedule等。今天第一次接触了使用数据库的存储过程来执行定时任务。

本篇文章以MySQL数据库为例,介绍通过数据库设置定时任务的方法。本文中以介绍操作过程为主,具体的sql语句、调用方法等,会因为业务需求的不同各不相同,具体方法和扩展使用可以自行查阅。

简介

数据库执行定时任务主要涉及三个过程:存储过程、事件和任务执行。如下图:没有定义存储过程和事件的数据库中,这两个文件夹下内容为空;而定义了存储过程和事件的数据库如图中所示。
在这里插入图片描述

第一步:定义存储过程

CREATE DEFINER=`dbname`@`%` PROCEDURE `dbname`.`dbtable_expires`()
BEGIN
	set @expired_id = (select id from ac_id_table ac where expire_at < now() limit 1);

	insert into ac_expires_events_result(id) values (@expired_id);

	update ac_id_table set flag=0 where id = @expired_id;
	update ac_id_associate  set status=0 where id = @expired_id;
END

说明:

  1. 通过CREATE DEFINER=`dbname`@`%` PROCEDURE `dbname`.`dbtable_expires`()语句定义一个存储过程
  2. BEGINEND之间是执行事件的语句。在本例中,包括:
    • 从表格里面筛选符合条件的数据,并写入ac_expires_events_result
    • ac_id_table表中符合条件的flag更新为0
    • ac_id_associate表中符合条件的数据的status字段更新为0

这样,一个存储过程就定义完成。

第二步:定义和执行事件

CREATE EVENT id_expires_event // 定义事件
ON SCHEDULE EVERY 1 MINUTE // 每分钟执行一次
STARTS '2023-11-07 11:13:48.000' // 开始于什么时候
ON COMPLETION NOT PRESERVE // 当单次计划任务执行完毕后或当重复性的计划任务执行到了
DISABLE ON SLAVE
DO call dbname.dbtable_expires() // call 存储过程定义的名称

说明:

  1. CREATE EVENT client_expires_event 定义事件
  2. ON SCHEDULE EVERY 1 MINUTE 每分钟执行一次
  3. STARTS '2023-11-07 11:13:48.000' 开始于什么时候
  4. ON COMPLETION NOT PRESERVE 当单次计划任务执行完毕后或当重复性的计划任务执行到了
  5. DO call dbname.dbtable_expires() 调用定义的存储过程。这里需要特别注意:此处DO calldbname.dbtable_expires()就是第一步中定义的存储过程的名称

第三步:执行存储过程

定时任务的最后一步是执行存储过程。使用的命令如下:

call dbname.dbtable_expires(); #执行存储过程

该命令用于手动执行一次事件,定时执行还需要通过如下命令,全局开启定时任务调度器。执行下列命令后,就可以定时执行任务。PS:全局开启调度器需要有数据库管理员权限才行~

SET GLOBAL event_scheduler = 1; #全局开启调度器

另外,还有如下命令,可以查看创建事件、查看调度器状态。

show events; # 查看已创建的时间
show variables like '%scheduler%'; #查看调度器状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1205543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

注册并实名认证华为开发者账号流程

文 | Promise Sun 1. 打开华为开发者网址&#xff1a; https://www.harmonyos.com 2.注册华为开发者账号&#xff1a; 1&#xff09;注册时可以选择手机号或者邮箱两种方式注册&#xff0c;建议选择手机号注册。 2&#xff09;根据提示填写信息注册即可。 3.开发者实名认证&am…

P6入门:项目初始化7-项目详情之代码/分类码Code

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…

lc307.区域和检索 - 数组可修改

暴力解法 创建方法&#xff0c;通过switch-case判断所需要调用的方法。 public class RegionsAndSertches {public static void main(String[] args) {String[] str new String[]{"NumArray", "sumRange", "update", "sumRange"};i…

算法笔记-第五章-分数的四则运算

分数的四则运算 分数约分分数加法分数减法分数乘法分数除法分数的输出 分数约分 #include <cstdio> #include <algorithm> using namespace std; struct Fraction {//用结构体表示分子和分母int up, down; }; int gcd(int a, int b) {//求出最大公约数if (b 0) {r…

RTOS实时操作系统在嵌入式开发中的应用

随着各种嵌入式系统应用的日益复杂和对实时性要求的提高&#xff0c;使用实时操作系统&#xff08;RTOS&#xff09;成为嵌入式开发中的一种重要选择。STM32微控制器作为一种强大的嵌入式处理器&#xff0c;与各种RTOS相结合&#xff0c;能够提供更高效、可靠并且易于维护的系统…

CDN加速技术:节点部署的专业指南

随着互联网的迅猛发展&#xff0c;网站的访问量也在不断增加。为了提供更快、更稳定的用户体验&#xff0c;许多网站都采用了剑盾上云CDN&#xff08;内容分发网络&#xff09;技术。在CDN加速中&#xff0c;节点的合理部署是关键一环&#xff0c;决定了加速效果的优劣。本文将…

Android launchWhenXXX 和 repeatOnLifecycle

文章目录 Android launchWhenXXX 和 repeatOnLifecyclelifecycleScope和viewModelScopelaunchWhenXXXrepeatOnLifecycleflowWithLifecycle总结 Android launchWhenXXX 和 repeatOnLifecycle lifecycleScope和viewModelScope LiveData优点&#xff1a; 避免内存泄露风险&…

算法笔记-第五章-质因子分解

算法笔记-第五章-质因子分解 小试牛刀质因子2的个数丑数 质因子分解最小最大质因子约数个数 小试牛刀 质因子2的个数 #include<cstdio> int main() {int n; scanf_s("%d", &n); int count 0; while (n % 2 0) {count; n / 2; }printf("%…

P36[11-1]SPI通信协议

SPI相比于IIC的优缺点: 1.SPI传输速度快(IIC高电平驱动能力较弱,因此无法高速传输) 2.使用简单 3.通信线多 SCK(SCLK,CK,CLK):串行时钟线 MOSI(DO):主机输出,从机输入 MISO(DI): 主机输入,从机输出 SS(NSS,CS):从机选择(有多少个从机,主机就要用几根SS分别与从机连接…

人工智能基础_机器学习026_L1正则化_套索回归权重衰减梯度下降公式_原理解读---人工智能工作笔记0066

然后我们继续来看套索回归,也就是线性回归,加上了一个L1正则化对吧,然后我们看这里 L1正则化的公式是第二个,然后第一个是原来的线性回归,然后 最后一行紫色的,是J= J0+L1 对吧,其实就是上面两个公式加起来 然后我们再去看绿色的 第一行,其实就是原来线性回归的梯度下降公式…

WordPress 文档主题模板Red Line -v0.2.2

此主题作为框架&#xff0c;做承载第三方页面之用&#xff0c;例如飞书文档等&#xff0c; 您可以将视频图片等资源放第三方文档上&#xff0c;通过使用此主题做目录用。 此主题使用前后端分离开发&#xff0c;也使用了一些技术尽量不影响正常的SEO&#xff0c;还望注意。 源码…

P6入门:项目初始化5-项目支出计划Spending Plan

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…

网络和Linux网络_1(网络基础)网络概念+协议概念+网络通信原理

目录 1. 网络简介 1.1 独立模式和互联网络模式 1.2 局域网LAN和广域网WAN 2. 协议和协议分层 2.1 协议的作用 2.2 协议分层 2.3 OSI七层模型 3.2 TCP/IP四层(五层)模型 3. 网络通信原理 3.1 协议报头 3.2 局域网和解包分用 3.3 广域网和跨网络 4. 网络中的地址 4…

Android图形系统之X11、Weston、Wayland、Mesa3D、ANGLE、SwiftShader介绍(十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Java18新增特性

前言 前面的文章&#xff0c;我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16、Java17 的特性进行了介绍&#xff0c;对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特性 Java…

LCD1602设计(2)-指令宏定义完整版

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

红色旅游AR互动体验将景区推向更广泛的市场

AR技术的出现使得各展厅观众可以在虚拟和现实的层面进行互动&#xff0c;利用AR和VR技术&#xff0c;将展览地点扩展到特定的虚拟领域&#xff0c;实现了"无触觉"交互体验&#xff0c;增强现实技术和展馆的对接更加激发人们了解新事物的兴趣。 一、AR景区&#xff1a…

idea maven 构建本地jar包及pom文件

1、设置模块build 本地输出路径 <build><defaultGoal>compile</defaultGoal><resources><resource><directory>${basedir}/src/main/resources</directory><includes><include>**/**</include></includes>…

JAVA数据代码示例

首先&#xff0c;我们需要导入一些必要的Java库 java import java.net.URL; import java.net.HttpURLConnection; import java.io.BufferedReader; import java.io.InputStreamReader; 然后&#xff0c;我们可以创建一个URL对象&#xff0c;表示我们要爬取的网页的URL。 jav…

Spring后端HttpClient实现微信小程序登录

这是微信官方提供的时序图。我们需要关注的是前后端的交互&#xff0c;以及服务端如何收发网络请求。 小程序端 封装基本网络请求 我们先封装一个基本的网络请求。 const baseUrl"localhost:8080" export default{sendRequsetAsync } /* e url&#xff1a;目标页…