日报表定时任务优化历程

报表需求背景

报表是一个很常见的需求,在项目中后期往往会需要加多种维度的一些统计信息,今天就来谈谈上线近10个月后的一次报表优化优化之路(从一天报表跑需要五分钟,优化至秒级)
需求:对代理商进行日统计
统计数据:门店数量、设备总数、当日订单数/金额/退款/收益、门店七日新增数、30日0订单门店数量
前置约束:未明确标明指定主库操作 以及 事务,则默认代表走 从库 以及 默认事务

先来看看这一版的流程:

// 以下所有查询/统计 均为从MySQL中获取

按天 开始 循环(任务调度时可指定日期补偿重跑,防止后续定时任务中断,默认跑昨日数据)
    1. 获取所有代理商(大几千个)
        代理商列表 循环开始
    2. 门店统计
        2.1    获取代理名下所有门店列表
        2.2    查询代理近三十天内有订单的门店ID,对比门店列表 得到:30日0订单门店数量
        2.3    获取代理名下七日新增门店
    3. 设备总数统计
    4. 订单统计
        4.1    统计代理昨日订单数/订单金额/退款(订单/收益 均是千万级表)
        4.2    统计代理昨日收益
        代理商列表 循环结束
    5. 新开事务 且 指定主库
        5.1    清理对应日期的统计数据
        5.2    对统计数据进行分批提交(mybatis拼接SQL,千条为一个批次,防止后续当日统计数据过多,导致SQL长度超限)
        5.3    事务提
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值