事件调度程序或在 mysql 中设置计时器
本教程将指导你创建一个 event
,也称为 mysql 计时器。
我们将看到如何在 mysql 中设置计时器以让 mysql 操作数据(例如,update
/insert
/delete
数据)。它还将在提到的日期和时间进行备份(如果需要)。
我们将考虑不同的场景来研究 mysql event
。此外,讨论它的重要性和好处。对于本文,我们使用的是 mysql 版本 8.0.27,但你可以从他们的官方网站获得更新的版本(如果有)。
mysql 事件
及其重要性
mysql event
是用于安排某些操作的任务 - 例如,更新列、获取表或数据库备份。
你可以创建``事件
将只执行一次或根据给定的时间间隔重复 - 例如,每分钟、每小时、每月或每年。
没有固定数量的语句来创建 event
。event
正文中可以有许多行。
如果 event
有多于一行,则正文必须包含在 begin
和 end
块中。同样重要的是要知道预定的 event
命令存储在数据库
中并在预定的日期
和时间
执行。
创建事件对于以下好处很重要:
- 让每个人都在同一页面上
- 设定你的目标
- 管理日程并执行事件
- 用于优化表格、更新数据
- 为非高峰时间生成有用的报告
- 让你优先处理你的任务
- 节省你的金钱和时间
在 mysql 中 event
调度程序或设置定时器
延误对制作团队和品牌来说都是非常昂贵的。
安排事件
或为特定字段(列)设置计时器,然后将它们转储到项目报告的单独文件中将节省他们的时间。这样,它会让他们专注于其他生产性任务。
mysql 使用一个名为 event_scheduler
的线程来执行所有事件。如果 event_scheduler
的值是 on
,那么 event
才会被执行;否则,它不会。
你必须使用以下命令将 event_scheduler
的值设置为 on
。
setglobalevent_scheduler=on;
现在,如果你创建
一个事件
,你怎么知道它会被执行?使用以下命令查看。
showprocesslist;
让我们看看将 event_scheduler
的值设置为 on
之前和之后的输出。
在第一个输出中,你不能执行 event
,但在第二个输出中,你可以。这是因为第二个屏幕截图的 event_scheduler
为 on
。
输出:
你可以创建``事件
用于不同的目的 - 例如,事件
将只运行一次或每年运行一次,或者在给定的时间间隔内运行一次。让我们在示例代码的帮助下开始理解。
我们在 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
的工作是 insert
在 student
表中的一行。
创建并执行此 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());
在上面给出的代码中,我们使用 starts
和 ends
告诉 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
正文中包含多行时,请将它们包含在 begin
和 end
中,如上所述。
在本例中,我们创建了一个从 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 中使用 mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:mysql
-
你将了解阻止主机的原因。此外,通过使用 phpmyadmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。
发布时间:2024/03/26 浏览次数:199 分类:mysql
-
本教程演示如何在 mysql 中转换为整数。