当前位置: 首页
科技数码
定时任务执行效率低下?海量数据场景的架构优化指南

定时任务执行效率低下?海量数据场景的架构优化指南

热心网友 时间:2025-11-04
转载

假设我们每天会新增约100万条用户流水记录,这意味着每日新增的流水数据量大约在百万级别,月度新增数据则接近三千万条,而三个月下来,流水数据总量将攀升至亿级规模。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

\

这是针对星球粉丝提问的一次回答。问题的核心可以简化为:

在设计用户会员积分体系时,每个用户会根据积分流水产生相应的分数,每月需对用户进行积分统计,并根据不同积分等级实施差异化业务处理。

数据假设如下:

假设总用户数在百万级别;每个用户每日新增一条流水记录,导致日增流水数据量约100万条,月新增流水约为三千万条,三个月累计的数据总量则达到亿条水平。

常见的解决方案是:

设置一个定时任务,在每月初进行一次性统计。

// (1) 获取所有用户ID列表
uids[] = select uid from t_user;

// (2) 遍历所有用户
foreach $uid in uids[] {
    // (3) 查询该用户近三个月的积分流水记录
    scores[] = select score from t_flow 
                 where uid=$uid and time within [最近三个月];
    
    // (4) 遍历积分流水记录
    foreach $score in scores[] {
        // (5) 计算总积分
        sum += $score;
    }
    
    // (6) 依据总积分执行相应业务逻辑
    switch(sum) {
        升级、降级、发优惠券、发奖励等业务操作;
    }
}

如果一个月的计算任务仅执行一次,可能会出现哪些潜在问题?

计算量巨大,数据处理量非常庞大,执行耗时较长。按照用户的实际情况来说,这类任务可能花费一到两天才能完成。

进一步分析:外部循环需处理百万级别的用户;内部循环则针对每个用户近三千万条流水记录;业务逻辑处理还需要与数据库进行十几次交互。

是否可以采用多线程并行处理的方式来优化?

是可以实现的,因为各个用户的流水处理彼此独立,没有耦合关系。

若采用多线程并行处理(比如按照用户拆分任务),可能存在哪些挑战?

每个线程都需要频繁查询数据库以执行业务处理,这很可能给数据库带来巨大压力,导致其不堪重负。

这类问题的优化方向应该从哪些方面入手?

针对同一份数据,要尽量减少重复计算次数;分散CPU计算时间,尽可能采用分布式处理方案,而不是集中式处理;同时也要设法降低单次计算的数据量。

如何有效避免对同一份数据的重复计算?

如上图所示,假设每个方格代表一个月的积分流水数据(约三千万条)。

当3月底进行计算时,需要统计1月、2月、3月三个月的九千万条数据;

到4月底再次计算时,又要重新查询2月、3月、4月这三个月的九千万条数据;

……

我们会发现,2月和3月的数据(图中粉色部分)被重复查询和计算了多次。实际上,每个月份的数据都会被重复计算3次。

改进方案是:新增一个月度积分流水汇总表,每月仅计算当月的增量数据。

flow_month_sum(month, uid, flow_sum)
每月底仅需计算当月分数,这样数据处理量就减少到原来的1/3,耗时也相应缩减了1/3;同时,只需将前两个月的流水数据相加,就能快速获得近三个月的总分(这个操作几乎不占用时间);

补充说明:这张表的记录数量与用户表一致,同样是百万级别。

如此一来,每一条积分流水记录就只会被计算一次。

如何合理分散CPU计算时间,同时降低单次计算的数据量呢?

业务需求是每月重新计算一次积分,但如果集中在某一天处理,数据量过于庞大,耗时太久。可以考虑将计算任务分摊到每一天执行。

如上图所示,将月度积分流水汇总表升级为日度积分流水汇总表。

把每月1次的集中计算分解为30次分散计算,每次计算的数据量减少到1/30,这样一来每次只需要几十分钟就能处理完毕。

更进一步,甚至可以每小时计算一次,这样每次计算的数据量又减少到1/24,每次处理时间就缩短到几分钟以内了。

虽然计算时间缩短了,但终究还是定时任务,能否实现积分流水的实时计算呢?

每天新增的百万条积分流水记录,完全可以通过实时累加的方式来实现“日积分流水汇总”。

可以利用DTS(或者canal)监控积分流水表的变化,当用户积分发生变化时,系统可以实时进行日积分累加。这样就能将原来每小时执行一次的定时任务,转换为“每时每刻”都在进行的实时计算。每天新增的百万条流水数据,对数据库写入压力来说,平均每秒也就十几次请求,完全能够轻松应对。

补充说明:如果无法使用DTS/canal,也可以考虑采用MQ消息队列来实现。

总结起来,对于这类需要一次性集中处理大量数据的定时任务,优化的核心思路包括:

针对同一份数据,尽量减少重复计算;分散CPU计算时间,尽可能采用分布式处理(甚至可以实现实时计算),而不是集中处理;同时减少单次计算的数据量。

通过以上方法对大数据量定时任务的执行时间进行优化,你是否已经掌握其中的要诀?

知其然,更要知其所以然。

理解优化思路比记住结论更为重要。

来源:https://www.51cto.com/article/828756.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
雷鸟创新AWE斩获艾普兰创新奖 蝙蝠侠限定款国内首秀

雷鸟创新AWE斩获艾普兰创新奖 蝙蝠侠限定款国内首秀

雷鸟X3 Pro斩获AWE艾普兰创新大奖,开启全民AR生活新篇章 在上海新国际博览中心隆重揭幕的2026年中国家电及消费电子博览会(AWE)上,前沿AI科技与未来生活愿景激情碰撞。全球消费级AR领导品牌雷鸟创新,以其里程碑式的表现,定义了行业发展的新方向。 通过“顶尖硬件科技+顶级文化IP”的双轨战

时间:2026-04-02 22:59
AWE探展MOVA:31款创新产品集中亮相 重新定义智慧生活新体验

AWE探展MOVA:31款创新产品集中亮相 重新定义智慧生活新体验

借力AWE2026“一展双区”,MOVA双区协同、震撼登场 备受瞩目的科技盛会——2026年中国家电及消费电子博览会(AWE),于3月12日至15日在上海盛大举办。本届AWE展会首次创新采用“一展双区”的展览模式,主会场位于上海新国际博览中心,分会场则设于上海东方枢纽国际商务合作区,两大展区高效联动

时间:2026-04-02 22:59
iPhone 18 Pro设计挤牙膏了 继续用前代模具

iPhone 18 Pro设计挤牙膏了 继续用前代模具

iPhone 18 Pro系列模具不变,屏幕形态将与iPhone 17 Pro保持一致 备受期待的屏下Face ID组件小型化设计与灵动岛区域缩窄方案,预计将被推迟至后续迭代机型中正式应用。 近期,关于iPhone 18 Pro系列的技术传闻持续引发行业关注,尤其在显示与解锁设计领域传言甚多。多方消

时间:2026-04-02 22:57
海韵 FOCUS v5系列电源3.16日首发,标配ATX 3.1规范

海韵 FOCUS v5系列电源3.16日首发,标配ATX 3.1规范

海韵FOCUS v5电源正式上市:140mm短机身设计,白金能效,专为紧凑高性能主机打造 对于追求极致空间利用的DIY玩家,尤其是ITX与小尺寸机箱用户,一款高效且尺寸紧凑的电源是组建高性能主机的关键。海韵旗下备受期待的FOCUS v5系列电源,现已在京东自营旗舰店正式发售。该系列主打标准的140m

时间:2026-04-02 22:56
2026必买A级纯电SUV 方程豹钛3闪充版上市15万起

2026必买A级纯电SUV 方程豹钛3闪充版上市15万起

作为A级纯电市场首款标配闪充的方盒子车型,方程豹钛3闪充版凭借三大越级实力,问鼎同级科技与潮流标杆 2026年3月13日,方程豹品牌正式推出钛3闪充版,新车提供620KM后驱闪充版与565KM四驱闪充版两个车型配置,官方指导价定在15 38万至16 98万元区间。同步,备受期待的钛7EV闪充版也启动

时间:2026-04-02 22:52
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程