MySQL的计划任务创建
2013-01-08 20:02
337 查看
实际项目中只想将最近7天的记录保存在MySQL数据库中,使用程序通过SQL指令的方式删除比较麻烦且效率低,用Mysql 提供的事件调度器(event scheduler)可轻松实现。
具体步骤如下:
1:超级用户方式登陆MySQL console
# mysql -uroot
2:打开event_scheduler(默认是关掉的)
mysql> set global event_scheduler = ON;
3:创建我们的事件(本例中命名为delete_old_record)
mysql> CREATE EVENT delete_old_record
ON SCHEDULE EVERY 1 DAY STARTS NOW()
DO
-- delete the old records of demo_1_table
DELETE FROM demo_1_table WHERE datediff(NOW(),log_timestamp)>=7;
-- delete the old records of puma_2_table
DELETE FROM demo_2_table WHERE datediff(NOW(),log_timestamp)>=7;
-- delete the old records of puma_3_table
DELETE FROM demo_3_table WHERE datediff(NOW(),log_timestamp)>=7;
-- delete the old records of puma_4_table
DELETE FROM demo_4_table WHERE datediff(NOW(),log_timestamp)>=7;
4:启动创建的事件
mysql> ALTER EVENT delete_old_record ENABLE;
这样以后,数据库就会每天执行DO后面的作业,删除各个table中7天之前的记录。
附录:CREATE EVENT的格式如下:
CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;
schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
具体步骤如下:
1:超级用户方式登陆MySQL console
# mysql -uroot
2:打开event_scheduler(默认是关掉的)
mysql> set global event_scheduler = ON;
3:创建我们的事件(本例中命名为delete_old_record)
mysql> CREATE EVENT delete_old_record
ON SCHEDULE EVERY 1 DAY STARTS NOW()
DO
-- delete the old records of demo_1_table
DELETE FROM demo_1_table WHERE datediff(NOW(),log_timestamp)>=7;
-- delete the old records of puma_2_table
DELETE FROM demo_2_table WHERE datediff(NOW(),log_timestamp)>=7;
-- delete the old records of puma_3_table
DELETE FROM demo_3_table WHERE datediff(NOW(),log_timestamp)>=7;
-- delete the old records of puma_4_table
DELETE FROM demo_4_table WHERE datediff(NOW(),log_timestamp)>=7;
4:启动创建的事件
mysql> ALTER EVENT delete_old_record ENABLE;
这样以后,数据库就会每天执行DO后面的作业,删除各个table中7天之前的记录。
附录:CREATE EVENT的格式如下:
CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;
schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
相关文章推荐
- MySQL CREATE EVENT创建任务计划 定时执行任务(转)
- mysql自带计划任务创建语法
- MySQL CREATE EVENT创建任务计划定时执行任务
- Windows中MySQL自动备份和Windows的计划任务创建
- MySQL CREATE EVENT创建任务计划 定时执行任务
- 【Mysql】MySQL event 计划任务
- mysql创建事件定时执行任务
- C#读取注册表,C#创建任务计划
- oracle创建计划任务
- MySQL计划任务之三
- 在Spring3中使用注解(@Scheduled)创建计划任务
- window下如何使用命令行创建schedule task(计划任务)
- 在Spring3中使用注解(@Scheduled)创建计划任务源码
- MySQL创建定时任务动态创建月表
- PHP创建Windows计划任务及At命令的简单介绍
- mysql任务计划(转)
- mysql创建定时任务
- MySQL计划任务(事件调度器)(Event Scheduler)
- mysql 计划任务 调用存储过程
- MySQL触发器和Windows计划任务结合使用达到定时触发的效果