Mysql定期任务(删除)

设定事件

create event event_name
on schedule
every 1 DAY
starts now()
ON COMPLETION PRESERVE ENABLE
DO
DELETE FROM database_name.table_name WHERE timestamp<DATE_SUB(NOW(),INTERVAL 48 hour);

执行事件

set global event_scheduler = on
SHOW VARIABLES LIKE 'event_scheduler';

重启时间自动生效

在my.ini配置文件的[mysqld]部分加上event_scheduler=ON 即可

MySQL 定期删除数据可以使用以下两种方法: 1. 使用 MySQL 事件调度器 MySQL 事件调度器可以在指定的时间间隔内自动执行指定的 SQL 语句。可以使用以下步骤来定期删除数据: - 创建一个存储过程,该存储过程包含要执行的 SQL 语句。 - 创建一个事件,该事件包含存储过程和执行的时间间隔。 - 启用事件调度器。 以下是一个示例存储过程和事件: ``` DELIMITER $$ CREATE PROCEDURE delete_old_data() BEGIN DELETE FROM my_table WHERE created_date < DATE_SUB(NOW(), INTERVAL 30 DAY); END$$ DELIMITER ; CREATE EVENT delete_data_event ON SCHEDULE EVERY 1 DAY STARTS '2022-01-01 00:00:00' DO BEGIN CALL delete_old_data(); END; ``` 上述代码将创建一个名为 `delete_old_data` 的存储过程,该存储过程将删除 `my_table` 表中创建时间早于 30 天前的所有数据。然后,创建一个名为 `delete_data_event` 的事件,该事件每天执行一次,并在 2022 年 1 月 1 日开始执行。 2. 使用 cron 任务 在 Linux 系统上,可以使用 cron 任务定期运行 MySQL删除数据命令。可以使用以下步骤来设置 cron 任务: - 创建一个 shell 脚本,该脚本包含要执行的 SQL 语句。 - 使用 crontab 命令来创建一个定时任务,指定要运行的 shell 脚本和执行的时间间隔。 以下是一个示例 shell 脚本和 cron 任务: ``` #!/bin/bash mysql -u username -p password -e "DELETE FROM my_table WHERE created_date < DATE_SUB(NOW(), INTERVAL 30 DAY);" # crontab -e 0 0 * * * /path/to/script.sh ``` 上述代码将创建一个名为 `script.sh` 的 shell 脚本,该脚本将删除 `my_table` 表中创建时间早于 30 天前的所有数据。然后,使用 `crontab -e` 命令来添加一个 cron 任务,该任务每天执行一次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值