我想从MySQL表中删除未更新超过3分钟的记录。如何在后台设置计时器来管理它而不用java中的事件或方法调用?这可能吗?
DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 5 MINUTE)
答案 0 :(得分:0)
<强> 修改 强>
误读了您的问题 - 以下内容描述了如何使用Java来安排任务而不是独立于Java层进行任务
您可以使用Timer
和TimerTask
的组合来实现此目的。它们共同形成了一个非常简单的调度设施Timer
计划定期TimerTasks
。
网上有很多好的教程:for example
答案 1 :(得分:0)
正如@abhishek-ghosh正确指出的那样,您可以使用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事件调度程序默认情况下不运行,需要启用才能使事件生效。
请参阅this StackOverflow answer或How to Configure MySQL Event Scheduler文章,了解如何启用MySQL事件调度程序并确保其正常运行。
使用MySQL配置文件中的命令行选项--event-scheduler=ON
或setting event_scheduler=ON
(Windows上的my.cnf或my.ini)启动MySQL时,可以确保调度程序启动。
或者,您可以从MySQL命令行启动调度程序:
SET GLOBAL event_scheduler = ON;