mysql数据库定时执行sql语句
背景;性能测试稳定性测试场景,需要定时对数据库缓存表进行清理,否则造成表空间不足和磁盘空间不足导致交易异常停止,影响测试;目的:定时执行RUNCATE语句,清空表内容;
方法:通过MySQL 的事件调度器(Event Scheduler)来实现
操作步骤:
1. 确保事件调度器开启
首先检查并开启 MySQL 的事件调度器(默认可能关闭):-- 查看事件调度器状态(ON表示开启,OFF表示关闭)SHOW VARIABLES LIKE 'event_scheduler';-- 如果未开启,执行以下语句开启(需要管理员权限)SET GLOBAL event_scheduler = ON;2. 创建定时任务(事件)
执行以下 SQL 创建一个每 1 小时执行一次的事件,用于清空指定表数据:-- 创建事件(如果已存在则先删除)
DROP EVENT IF EXISTS truncate_ieai_tables_hourly;
DELIMITER $$
CREATE EVENT truncate_ieai_tables_hourly
ON SCHEDULE EVERY 1 HOUR
STARTS CURRENT_TIMESTAMP-- 从当前时间开始执行
DO
BEGIN
-- 执行清空表的SQL(按顺序执行)
TRUNCATE TABLE ieai_workflowinstance;
TRUNCATE TABLE IEAI_ACTSTATEDATA;
TRUNCATE TABLE IEAI_REQUESTSTATEDATA;
TRUNCATE TABLE ieai_execact;
TRUNCATE TABLE ieai_run_instance;
TRUNCATE TABLE ieai_run_instance_his;
TRUNCATE TABLE ieai_runinfo_instance;
TRUNCATE TABLE ieai_runinfo_instance_his;
TRUNCATE TABLE ieai_blob;
TRUNCATE TABLE ieai_actruntime;
TRUNCATE TABLE ieai_actruninfo;
TRUNCATE TABLE ieai_biz_unique;
TRUNCATE TABLE ieai_callworkflow_info;
TRUNCATE TABLE ieai_shellcmd_output;
TRUNCATE TABLE ieai_remoteexecact;
TRUNCATE TABLE ieai_runinfo_step_succeed;
TRUNCATE TABLE ieai_runinfo_instance_param;
TRUNCATE TABLE ieai_runinfo_instance_param_his;
TRUNCATE TABLE ieai_errortask;
TRUNCATE TABLE ieai_iexecerror;
TRUNCATE TABLE ieai_flowenv;
DELETE FROM ieai_acttimeconfig;
END$$<br>说明:
[*]执行频率:EVERY 1 HOUR 表示每 1 小时执行一次。
[*]启动时间:STARTS CURRENT_TIMESTAMP 表示从创建事件的当前时间开始,首次执行后每隔 1 小时再次执行
[*]权限:创建事件需要EVENT权限,执行TRUNCATE和DELETE需要对应表的权限。
[*]查看事件:可通过 SHOW EVENTS; 查看已创建的事件。
[*]关闭 / 启用事件:若需临时关闭,可执行 ALTER EVENT truncate_ieai_tables_hourly DISABLE;,启用则替换为 ENABLE。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]