背景;性能测试稳定性测试场景,需要定时对数据库缓存表进行清理,否则造成表空间不足和磁盘空间不足导致交易异常停止,影响测试;
目的:定时执行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。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|
|
|
相关推荐
|
|