后台自动执行MySQL语句
Execute MySQL statement in the background automatically
我想从 MySQL table 中删除超过 3 分钟未更新的记录。如何在后台设置计时器来管理它而不被java中的事件或方法调用?这可能吗?
DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 5 MINUTE)
编辑
误读了您的问题 - 下面描述了如何使用 Java 来安排任务,而不是独立于 Java 层
您可以通过组合使用 Timer
和 TimerTask
来实现此目的。它们一起形成了一个非常简单的调度工具。 Timer
计划 TimerTasks
定期发生。
网上有很多不错的教程:for example
如 correctly pointed out, you can use CREATE EVENT.
CREATE EVENT event_bus_delete
EVERY 5 MINUTE
DO
DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 5 MINUTE);
在 MySQL 5.1.6 中添加了事件支持。但是,MySQL 事件调度程序默认情况下不是 运行,需要启用才能使事件正常工作。
请参阅有关如何启用 MySQL 事件调度程序的 this Whosebug answer or How to Configure MySQL Event Scheduler 文章并确保它是 运行。
您可以确保调度程序在 MySQL 启动时启动,使用 MySQL 配置文件中的命令行选项 --event-scheduler=ON
或 setting event_scheduler=ON
(my.cnf 或 Windows 上的 my.ini)。
或者,您可以从 MySQL 命令行启动调度程序:
SET GLOBAL event_scheduler = ON;
我想从 MySQL table 中删除超过 3 分钟未更新的记录。如何在后台设置计时器来管理它而不被java中的事件或方法调用?这可能吗?
DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 5 MINUTE)
编辑
误读了您的问题 - 下面描述了如何使用 Java 来安排任务,而不是独立于 Java 层
您可以通过组合使用 Timer
和 TimerTask
来实现此目的。它们一起形成了一个非常简单的调度工具。 Timer
计划 TimerTasks
定期发生。
网上有很多不错的教程:for example
如
CREATE EVENT event_bus_delete
EVERY 5 MINUTE
DO
DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 5 MINUTE);
在 MySQL 5.1.6 中添加了事件支持。但是,MySQL 事件调度程序默认情况下不是 运行,需要启用才能使事件正常工作。
请参阅有关如何启用 MySQL 事件调度程序的 this Whosebug answer or How to Configure MySQL Event Scheduler 文章并确保它是 运行。
您可以确保调度程序在 MySQL 启动时启动,使用 MySQL 配置文件中的命令行选项 --event-scheduler=ON
或 setting event_scheduler=ON
(my.cnf 或 Windows 上的 my.ini)。
或者,您可以从 MySQL 命令行启动调度程序:
SET GLOBAL event_scheduler = ON;