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


How to automatically delete every x minutes?

I使用代码点火器框架

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

是否可以做到?

感谢

您可以使用MySQL事件调度器。


先决条件:

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

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

SELECT @@event_scheduler;

要打开event_scheduler ON,请运行以下查询:

SET GLOBAL event_scheduler = ON;


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

对于Windows:my.ini文件中,在[mysqld]部分下写入

[mysqld]
event_scheduler=on

对于Linux:my.cnf文件中

[mysqld]
event_scheduler=on

事件:

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

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

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

按事件调度程序-

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上运行,则由cronjob执行;如果Mysql运行在Windows计算机上,则由任务管理器执行:

在一个文件中写入"truncate table mytable;"语法,并从cronjob或任务调度程序对其进行调度。

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

您可以使用Cronjob每2分钟删除表a中的所有记录。将您的PHP脚本(带有删除功能)分配给Web服务器上的Cronjob。