历史版本5 :自动清理FineDataLink运行记录 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

随着 FineDataLink 工程使用时间的增长,fine_dp_work_exec_record(记录定时任务的执行情况)表中的数据会不断积累,导致数据量逐渐增多。当数据量过大时,打开「任务运维>定时任务>运行记录」页面可能会变得缓慢,需要耗时 10 秒以上。

希望能定期清理 fine_dp_work_exec_record 表数据。

1.2 实现思路

使用 FineDataLink 定期清理 30 天前的定时任务的运行记录数据。

1.3 任务展示

FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「自动清理FDL运行记录

9.png

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

4.png

3)将 date 作为参数输出,「默认值」直接复制右侧参数预览后的值即可,默认值只是为了下游节点提前预览设置的,实际运行时不会用到这个默认值。

如下图所示:

注:参数赋值节点详情请参见:参数赋值

6.png

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}'

7.png

2.3 运行任务

1)点击保存并运行任务,任务运行成功后,如下图所示:

8.png

2)可通过 SQL 语句验证是否删除 30 天前的数据。

例如 30 天前日期为 2023-07-17 19:34:37 ,转为毫秒级时间戳为 1689593677000(百度有日期转时间戳在线工具),查询 startTime 小于 1689593677000 的数据是否为空即可。