唯快不破:如何快速处理大量数据

本文探讨了如何处理大量数据的问题,从单进程处理到利用Redis的pub/sub和List机制实现并行处理。通过方案演进,最终采用方案四,借助Redis的List,实现了生产端与消费端的分离,提升了数据写入速度至3000/s,有效解决了数据处理的效率问题。
摘要由CSDN通过智能技术生成

背景

  • 将数百张数据结构相同的表(用Tn代表),合并至一张表(用C代表)
  • T表数据量分布很不均衡,少至一位数,多至几十万
  • T表间没有业务关联
  • C表结构在T表结构的基础上增加了几个字段,无法使用INSERT INTO (SELECT * FROM)
  • 数据总量约300万,经单进程测试,处理速度约500/s,预估耗时约100min

目标

最大化提升数据处理速度,将耗时降至10min左右,此时C表的写入速度约5000/s。

方案演进

方案一

因为T表间没有业务关联,所以每张表都可以单独处理。
将T表按数据量排序,每个进程处理N张表,尽量平衡各进程的负载。
存在的问题:
T表的数据量分布极为不均衡,有几张表数据量在70万左右,最终耗时约为(70万/500)s,瓶颈问题严重。

方案二

方案一 的的基础上,以 表+数据 的维度做并行处理,可以解决大表瓶颈问题。
存在的问题:
代码实现较复杂,需要考虑

  • 每张T表的数据量
  • 对大数据量的T表进行分割
  • 避免数据重复处理

方案三

借助 Redis 的 pub/sub 机制,实现生产和消

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值