[xuxueli/xxl-job]xxl_job_log表日志量太大,导致慢查询

2023-12-15 858 views
7
Which version of XXL-JOB do you using?

XXL-JOB 2.3.1-SNAPSHOT

我们把xxl_job数据库跟生产的业务数据库部署在同一台MySQL实例下。 上线使用了约1年多,最近在mysql的慢查询统计中,经常排在前3,对应的慢查询语句:

SELECT
            COUNT(handle_code) triggerDayCount,
            SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
            SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
        FROM xxl_job_log
        WHERE trigger_time BETWEEN '2023-02-16 00:00:00' and '2023-02-16 23:59:59.999'

该查询存在索引,但是扫描行数在91492行,执行时长在几百ms的样子。

查询了一下表的总记录数,约69万行, 第一行记录是2023-01-31的记录,从这个说明xxljob还是会定期清理这个表的数据的。

想咨询的问题: 该表能否自行清理,比如我自己安排job去删除数据,只保留最近7天的数据,对xxljob的正常业务,是否会造成影响呢?

感谢雪大。

回答

8

当然可以清理,清理时长由你们业务决定

5

这个一般看自己的需求吧,我们基本上都是保留最近7天的

5

之前,主要是没去研究源码,不确定该表会不会影响任务的调度。

感谢楼上2位答复,我也安排下定时清理,只保留最近7天。

1

我留了一个月的记录,70w+行,查询时间达到400-500ms,如果去掉order by id,就能走handle_code索引了,比全表查询快很多,100ms。如果再加个联合索引,会进一步降级查询时间到40-50ms:

CREATE INDEX idx_handle_trigger_alarm ON xxl_job_log (handle_code, trigger_code, alarm_status);