1. 概述
1.1 应用场景
随着 FineDataLink 工程使用时间的增长,fine_dp_work_exec_record(记录定时任务的执行情况)表中的数据会不断积累,导致数据量逐渐增多。当数据量过大时,打开「任务运维>定时任务>运行记录」页面可能会变得缓慢,需要耗时 10 秒以上。
希望能定期清理 fine_dp_work_exec_record 表数据。
注:4.1.7.3 版本将fine_dp_work_exec_record表迁移到logdb中,表名不变,后续数据均写入迁移后数据表。升级后会将历史运行记录迁移到LogDB中,因此这部分数据可以直接使用清理日志。
1.2 实现思路
使用 FineDataLink 定期清理 30 天前的定时任务的运行记录数据。
1.3 任务展示
FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「自动清理FDL运行记录」
1.4 注意事项
本文第二章步骤适用于 4.1 之前版本。
4.1 及之后版本,定时任务执行情况的全量记录在 fine_dp_work_exec_record 表中,最近一次的记录在
fine_dp_work_last_record 表中。需要同时清理这两张表,清理步骤可参考本文第二章。
2. 操作步骤
fine_dp_work_exec_record 表在 FineDB 数据库中,本文示例中,FineDB 数据库迁移到了 MySQL 数据库中,所以本文示例的 SQL 语句为 MySQL 语句。
用户根据自己实际场景,调整 SQL 语句。
2.1 获取 30 天前日期并作为参数
1)新建定时任务。
2)拖入「参数赋值」节点,输出 date 字段,值为 30 天前日期。如下图所示:
SELECT DATE_SUB(NOW(), INTERVAL 30 DAY) AS date
3)将 date 作为参数输出,「默认值」直接复制右侧参数预览后的值即可,默认值只是为了下游节点提前预览设置的,实际运行时不会用到这个默认值。
如下图所示:
注:参数赋值节点详情请参见:参数赋值
2.2 删除 30 天前运行记录数据
1)拖入「SQL 脚本」节点,删除 30 天前定时任务的运行记录数据。如下图所示:
delete from `demo1`.`fine_dp_work_exec_record` where FROM_UNIXTIME(startTime/1000,'%Y-%m-%d %H:%i:%s')<='${date}'
2.3 运行任务
1)点击保存并运行任务,任务运行成功后,如下图所示:
2)可通过 SQL 语句验证是否删除 30 天前的数据。
例如 30 天前日期为 2023-07-17 19:34:37 ,转为毫秒级时间戳为 1689593677000(百度有日期转时间戳在线工具),查询 startTime 小于 1689593677000 的数据是否为空即可。