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

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

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

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

  1. 问题剖析,核心组件及其职责;
  2. 基于 Spring Boot 工程搭建;
  3. 基于 Stream 的文件读取能有多快;
  4. 简单的字符串解析,效率如何;
  5. 数据入库的瓶颈在哪,事务、批量、还是 SQL;
  6. 多线程如何提升效率。
已有255人预订
预订达标
文章出炉
     
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
受益匪浅,想尝试把这个封装成一个组件,以后只要涉及到批量入库的操作直接调用,感谢作者的抛砖引玉!
你可能还喜欢
110 道 Python 面试笔试题超强汇总
嘉美伯爵
Redis 实战场景详解
驰骋
轻松搞定机器学习中的概率统计知识
Evan
从学生到职场,这位百万爬虫博主都经历了什么?
崔庆才丨静觅
架构师成长之路之服务治理漫谈
飞狐
打造高效「Mac 工具栈」,提高工作效率
易水寒
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!