首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何每x分钟自动删除一次?

如何每x分钟自动删除一次?
EN

Stack Overflow用户
提问于 2016-03-23 10:43:55
回答 3查看 2.3K关注 0票数 4

I使用代码点火器框架

例如,我有表A,我希望系统每2分钟自动删除表A中的所有记录。

是否能做到?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-23 10:58:52

您可以使用MySQL事件计划程序。

先决条件:

您必须在mysql服务器上打开event_scheduler。

检查事件调度程序是ON还是OFF

SELECT @@event_scheduler;

要转动event_scheduler ON,请运行以下查询:

SET GLOBAL event_scheduler = ON;

注意:,如果您重新启动MYSQL Server,那么事件调度程序状态将被重置,除非在配置文件中写入以下内容。

For Windows: in my.ini文件将其写入[mysqld]部分

代码语言:javascript
复制
[mysqld]
event_scheduler=on

For Linux: in my.cnf文件

代码语言:javascript
复制
[mysqld]
event_scheduler=on

事件:

下面的事件将从名为tablename的表中删除数据。

代码语言:javascript
复制
CREATE 
EVENT `deleteEvent`
ON SCHEDULE EVERY 2 MINUTE STARTS '2016-03-23 00:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
DO
DELETE FROM tablename;

事件将在'2016-03-23 00:00:00'第一次启动,并在此之后每隔2分钟安排一次,并将从表中删除数据。

您可以使用Truncate而不是DELETE

TRUNCATE vs DELETE

票数 8
EN

Stack Overflow用户

发布于 2016-03-23 10:56:04

最好和快速的方法是截断表而不是删除表,所以您可以通过mysql自己的事件调度程序或cronjob

按事件调度的-

代码语言:javascript
复制
DELIMITER $$

ALTER DEFINER=`root`@`localhost` EVENT `trun_table` ON SCHEDULE EVERY 2 MINUTE STARTS '2016-03-23 16:30:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
        truncate table mytable;
    END$$

DELIMITER ;

如果Mysql在Linux上运行或任务管理器(如果Mysql运行在计算机上):

在一个文件中写入“截断表mytable;”语法,并从cronjob或任务调度程序中对其进行调度。

注意:如果您不想在表中重置您的auto_increment id,那么使用delete语句而不是truncate语句,因为truncate语句会将它重置为1。

票数 3
EN

Stack Overflow用户

发布于 2016-03-23 10:49:29

您可以使用Cronjob每2分钟删除表A中的所有记录。将PHP脚本(带有delete函数)分配给with服务器上的Cron作业。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36175959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档