文件读取、解析、入库,究竟可以多快?

作者/分享人:文心紫竹
向 Ta 提问
Dubbo 最早实战者,现转战 Spring Cloud ,构建高并发、高性能、高可用系统;DDD 实战者,以解决互联网复杂业务场景;长链挑战者,深入研究 Socket 、线程、锁、并发、分布式等

解析文件并入库(MySQL),是工作中最常见的需求,也算的上是职场必备技能之一。现假定需要从一个大文件中解析数据,并将其以最快速度完成入库操作,你能想到的最佳方案是什么?应该如何演进,一步步对效率进行提升?

本 Chat 将对其进行比较全面的剖析,所涉及内容如下:

  1. 问题剖析,核心组件及其职责;
  2. 基于 Spring Boot 工程搭建;
  3. 基于 Stream 的文件读取能有多快;
  4. 简单的字符串解析,效率如何;
  5. 数据入库的瓶颈在哪,事务、批量、还是 SQL;
  6. 多线程如何提升效率。
已有346人预订
预订达标
文章出炉
     
01月04日
01月17日
本场 Chat 文章已出炉,购买后即可阅读文章并获得一张文心紫竹的读者圈Pass
请务必添加GitChat服务号以查看活动进度及获取活动通知。
查看文章评论/提问
Change the Worlds
弱弱的问一下,如果链接阿里云数据库 是不是会有网络的问题呀
文心紫竹: 本chat没有涉及阿里云MySQL的访问,基本是在本机完成。 一般情况下,我们的服务与数据库间是通过内网直接访问,都是千兆、万兆网卡,网络问题不是太大问题。如果像阿里这样规模的公司,存在跨机房访问,网络问题会变得比较严重,这种情况下,通过将请求并发化,SQL合并化等策略,可以提升性能
高雄
if (preBatch.size()>=PRE_BATCH_COUNT){ preBatch = new ArrayList<>(PRE_BATCH_COUNT); this.batchUser.add(preBatch); } 这段代码有点问题 1,应该是先添加 再 new 出来 ,2,这样直接添加会产生应用问题, 导致最后batchUser里面没有数据
文心紫竹: 嗯,又确认了下代码,确实有问题。 这样可能导致最后添加一个empty的list,多谢提醒
niezhihao
受益匪浅,想尝试把这个封装成一个组件,以后只要涉及到批量入库的操作直接调用,感谢作者的抛砖引玉!
你可能还喜欢
JVM 问题诊断快速入门
火币集团研发中心
如何做好性能压测(二) | 性能压测工具选型对比
阿里巴巴中间件
被动收入 101 :使用云开发和 Taro 开发一个小程序
白宦成
实战:基于 RocketMQ 的电商高并发秒杀场景
RocketMQ
恕我直言,90% 的程序员都扛不住这波 MQ 的面试四连炮!
王码农
大白话聊聊面试中常被问到的分布式事务
不解释 家狗师
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
入群与作者交流×
扫码后回复关键字 入群
Chat·作者交流群
入群码
该二维码永久有效