【新增】调度性能提升:任务触发后分批批量更新,高频调度场景可百倍降低SQL操作合并执行,提升调度性能;

(新增“任务批量更新(xxl.job.schedule.batchsize)”配置项,支持动态修改批量操作大小)
3.4.0-release
xuxueli 6 months ago
parent 61bb60369a
commit 7b9fd95412

@ -2785,7 +2785,8 @@ public void execute() {
- 10、【优化】统一项目依赖管理结构,依赖版本统一到父级pom提升可维护性; - 10、【优化】统一项目依赖管理结构,依赖版本统一到父级pom提升可维护性;
### 7.44 版本 v3.4.0 Release Notes[ING] ### 7.44 版本 v3.4.0 Release Notes[ING]
- 1、【优化】调度性能提升:任务触发后分批批量更新,提升调度性能; - 1、【新增】调度性能提升:任务触发后分批批量更新,高频调度场景可百倍降低SQL操作合并执行,提升调度性能;
(新增“任务批量更新(xxl.job.schedule.batchsize)”配置项,支持动态修改批量操作大小)
- 2、【调整】Docker基础镜像调整为eclipse-temurin; - 2、【调整】Docker基础镜像调整为eclipse-temurin;
- 3、【优化】父POM依赖配置优化,移除容易配置;合并PR-3926; - 3、【优化】父POM依赖配置优化,移除容易配置;合并PR-3926;
- 4、【升级】升级多项maven依赖至较新版本; - 4、【升级】升级多项maven依赖至较新版本;

@ -181,6 +181,9 @@ public class XxlJobAdminBootstrap implements InitializingBean, DisposableBean {
@Value("${xxl.job.triggerpool.slow.max}") @Value("${xxl.job.triggerpool.slow.max}")
private int triggerPoolSlowMax; private int triggerPoolSlowMax;
@Value("${xxl.job.schedule.batchsize}")
private int scheduleBatchSize;
@Value("${xxl.job.logretentiondays}") @Value("${xxl.job.logretentiondays}")
private int logretentiondays; private int logretentiondays;
@ -244,6 +247,13 @@ public class XxlJobAdminBootstrap implements InitializingBean, DisposableBean {
return triggerPoolSlowMax; return triggerPoolSlowMax;
} }
public int getScheduleBatchSize() {
if (!(scheduleBatchSize >=50 && scheduleBatchSize <= 500)) {
return 100;
}
return scheduleBatchSize;
}
public int getLogretentiondays() { public int getLogretentiondays() {
if (logretentiondays < 3) { if (logretentiondays < 3) {
return -1; // Limit greater than or equal to 3, otherwise close return -1; // Limit greater than or equal to 3, otherwise close

@ -141,7 +141,7 @@ public class JobScheduleHelper {
/*for (XxlJobInfo jobInfo: scheduleList) { /*for (XxlJobInfo jobInfo: scheduleList) {
XxlJobAdminBootstrap.getInstance().getXxlJobInfoMapper().scheduleUpdate(jobInfo); XxlJobAdminBootstrap.getInstance().getXxlJobInfoMapper().scheduleUpdate(jobInfo);
}*/ }*/
int batchSize = 100; int batchSize = XxlJobAdminBootstrap.getInstance().getScheduleBatchSize();
List<List<XxlJobInfo>> scheduleListBatches = CollectionTool.split(scheduleList, batchSize); List<List<XxlJobInfo>> scheduleListBatches = CollectionTool.split(scheduleList, batchSize);
for (List<XxlJobInfo> scheduleListBatch : scheduleListBatches) { for (List<XxlJobInfo> scheduleListBatch : scheduleListBatches) {
int totalAffected = XxlJobAdminBootstrap.getInstance().getXxlJobInfoMapper().scheduleBatchUpdate(scheduleListBatch); int totalAffected = XxlJobAdminBootstrap.getInstance().getXxlJobInfoMapper().scheduleBatchUpdate(scheduleListBatch);

@ -64,6 +64,9 @@ xxl.job.i18n=zh_CN
xxl.job.triggerpool.fast.max=300 xxl.job.triggerpool.fast.max=300
xxl.job.triggerpool.slow.max=200 xxl.job.triggerpool.slow.max=200
## xxl-job, schedule batch size
xxl.job.schedule.batchsize=100
### xxl-job, log retention days ### xxl-job, log retention days
xxl.job.logretentiondays=30 xxl.job.logretentiondays=30

Loading…
Cancel
Save