事件调度程序或在 mysql 中设置计时器-ag捕鱼王app官网

当前位置:ag捕鱼王app官网 > > 数据库 > mysql >

事件调度程序或在 mysql 中设置计时器

作者:迹忆客 最近更新:2024/03/26 浏览次数:

本教程将指导你创建一个 event,也称为 mysql 计时器。

我们将看到如何在 mysql 中设置计时器以让 mysql 操作数据(例如,update/insert/delete 数据)。它还将在提到的日期和时间进行备份(如果需要)。

我们将考虑不同的场景来研究 mysql event。此外,讨论它的重要性和好处。对于本文,我们使用的是 mysql 版本 8.0.27,但你可以从他们的官方网站获得更新的版本(如果有)。


mysql 事件及其重要性

mysql event 是用于安排某些操作的任务 - 例如,更新列、获取表或数据库备份。

你可以创建``事件将只执行一次或根据给定的时间间隔重复 - 例如,每分钟、每小时、每月或每年。

没有固定数量的语句来创建 eventevent 正文中可以有许多行。

如果 event 有多于一行,则正文必须包含在 beginend 块中。同样重要的是要知道预定的 event 命令存储在数据库中并在预定的日期时间执行。

创建事件对于以下好处很重要:

  • 让每个人都在同一页面上
  • 设定你的目标
  • 管理日程并执行事件
  • 用于优化表格、更新数据
  • 为非高峰时间生成有用的报告
  • 让你优先处理你的任务
  • 节省你的金钱和时间

在 mysql 中 event 调度程序或设置定时器

延误对制作团队和品牌来说都是非常昂贵的。

安排事件或为特定字段(列)设置计时器,然后将它们转储到项目报告的单独文件中将节省他们的时间。这样,它会让他们专注于其他生产性任务。

mysql 使用一个名为 event_scheduler 的线程来执行所有事件。如果 event_scheduler 的值是 on,那么 event 才会被执行;否则,它不会。

你必须使用以下命令将 event_scheduler 的值设置为 on

setglobalevent_scheduler=on;

现在,如果你创建一个事件,你怎么知道它会被执行?使用以下命令查看。

showprocesslist;

让我们看看将 event_scheduler 的值设置为 on 之前和之后的输出。

在第一个输出中,你不能执行 event,但在第二个输出中,你可以。这是因为第二个屏幕截图的 event_scheduleron

输出:

你可以创建``事件用于不同的目的 - 例如,事件将只运行一次或每年运行一次,或者在给定的时间间隔内运行一次。让我们在示例代码的帮助下开始理解。

我们在 person 数据库中有一个 student 表,该表在当前时间有以下记录。

让我们创建以下事件来了解一次性事件。示例代码如下。

setglobalevent_scheduler=on;createeventifnotexistsone_time_eventonscheduleatcurrent_timestampdoinsertintoperson.student(id,first_name,last_name,gender,email)values(7,'thomas','christoper','male','tchristopher@gmail.com');

在上面给出的代码中,我们将 event_scheduler 的值设置为 on 以执行 event

然后我们创建了一个 event,将其命名为 one_time_event,并将其安排在 current_timestamp。这个 event 表示它将在 current_timestamp 上执行一次然后过期。

只有当它不存在时才会创建此 event。这个 event 的工作是 insertstudent 表中的一行。

创建并执行此 event 后,检查 student 表以查看新记录(见以下截图)。

输出:

假设你必须创建一个将在 current_timestamp 的 20 秒后执行的事件。这个事件也只会执行一次。写下下面的代码就明白了。

createeventifnotexistsone_time_event_with_intervalonscheduleatcurrent_timestampinterval20seconddoinsertintoperson.studentvalues(8,'suzu','aly','fmale','aly.suzu@yahoo.com');

输出:

你可以在 20 秒后在 student 表中看到新记录。

请记住,如果你在 20 秒之前检查它,你将不会在 student 表中看到这一新行。让二十秒过去,然后检查。

使用以下代码查看创建和安排了多少事件。

showeventsfromclassicmodels;

输出:

为什么上面的截图中没有列出任何 event?因为我们所有的活动现在都过期了,根据这篇文章。

你可以使用 on completion preserve 子句跟踪所有事件,无论它们是否过期,如下所示。

createeventtest_preserve_clauseonscheduleatcurrent_timestampinterval1minuteoncompletionpreservedoinsertintotests(test_name,test_date)values('testing preserve clause',now());

如果你想创建一个从 current_timestamp 开始,每分钟执行一次,并在一个小时后到期的事件怎么办。它被称为重复事件。

你可以使用以下代码进行创建和练习。

createeventrecurring_eventonscheduleevery1minutestartscurrent_timestampendscurrent_timestampinterval1hourdoinsertintotests(test_name,test_date)values('this is recurring event test',now());

在上面给出的代码中,我们使用 startsends 告诉 event 开始和结束时间。当你认为现在不需要该事件时,你也可以删除该事件。

在以下代码中用你的 event 名称替换 name

dropevent[ifexist]name;

让我们以另一种情况为例,你创建了 event 并将工作移交给另一个开发人员。没有 comment 容易理解吗?当然不是。

create event 并通过添加 comment 来练习,如下所示。

createeventrecurring_eventonscheduleevery1minutestartscurrent_timestampendscurrent_timestampinterval1hourcomment'it will add a new record every minture for one hour'doinsertintotests(test_name,test_date)values('this is recurring event test',now());

我们已经在 event 正文中仅使用一行来学习 event。如果你有多条线路怎么办?让我们通过下面的示例代码来理解它。

delimiter|createeventifnotexistsevent_for_update_columns_and_dumponscheduleatcurrent_timestampdobeginupdatestudentsetgender='m'wherestudent.gender='male';updatestudentsetgender='f'wherestudent.gender='female';tablestudentintooutfile'c:/programdata/mysql/mysql server 8.0/uploads/file.csv'fieldsterminatedby','optionallyenclosedby'"'linesterminatedby'\r\n';end|delimiter;

你将在提供的代码中的 event 正文中看到三个查询。每当你在 event 正文中包含多行时,请将它们包含在 beginend 中,如上所述。

在本例中,我们创建了一个从 current_timestamp 开始的 event。它将根据 update 语句更新 gender 列并将数据导出到 .csv 文件中。

对于导出,你必须使用此路径 c:/programdata/mysql/mysql server 8.0/uploads/file.csv(如果你在 c 驱动器中安装了 mysql)。否则,你将收到以下错误。

errorcode:1290.themysqlserverisrunningwiththe--secure-file-priv option so it cannot execute this statement

如果你已将 mysql 安装在其他位置,请使用 event scheduler,然后使用以下命令查找你的文件将被导出的路径。

showvariableslike"secure_file_priv";

结论

我们在本教程中了解了 mysql event 调度程序。

我们学习了如何创建将按照提供的时间间隔执行一次的事件,根据给定的时间间隔仅执行一次。我们还探索了创建包含多行的事件、更新数据,然后将其导出到单独的文件中。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 mysql 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:mysql

当你需要在 mysql 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

发布时间:2024/03/26 浏览次数:176 分类:mysql

本教程演示了如何在 mysql 中重置自动增量。

在 mysql 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:mysql

本教程介绍了 mysql 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 mysql 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:mysql

在本教程中,我们将学习如何在 mysql 服务器中更改时区。

发布时间:2024/03/26 浏览次数:199 分类:mysql

本教程演示如何在 mysql 中转换为整数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图