如何缩短定时任务(长连接)执行时间

日常开发中,尽可能的需要避免长连接的业务代码出现,但是通常定时任务常常会被用来解决长连接业务。大多数定时任务设定在夜晚执行,为了不影响白天的业务和人员操作。

长连接的定时任务也面临一个问题,数据库的session失效时间以及随着业务长期维护,数据量增加的情况导致预定的定时任务无法完成执行的情况。比如预定凌晨4:00执行一个定时任务,预计1个小时处理完毕,正常执行的时候也的确是凌晨5:00左右完成,但随着数据量的翻倍,查询,计算,更新数据的时间延长,可能照成6:00该任务仍旧在执行。如果当前行数据,被用户同时操作,会引发数据库锁表和用户等待。

如何尽可能缩短定时任务(长连接)执行时间,这是一个问题!

减少数据量

1、分批处理:如果一个定时任务已月度执行,拆分到天进行分批处理。每天的定时任务,均摊到每时每刻。

2、多线程并行处理,需要考虑并发问题以及服务器与数据库能力。

3、排除不必要的输入参数,已执行定时任务不再处理,只处理增量数据。同一份数据,减少重复计算。

优化代码

1、增加缓存数据,配置性数据静态化

2、减少IO次数,批量更新数据

3、增加事务,单次执行过程中,执行sql后需立即提交更新。

4、优化循环代码,大循环放在最里面一层

5、多线程处理,需要考虑并发问题以及服务器与数据库能力。

优化数据库表,减少IO时间

1、数据库增加索引

2、大数据量分库分表

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值