这里多数使用到很多 Java8 的API,不了解的朋友可以翻看我之前关于 Java 的博客 。方法使用起来很简单
InsertConsumer.insertData(feeList, arrearageMapper::insertList);
其他影响性能的内容日志避免在 for 循环中打印过多的 info 日志
在优化的过程中,我还发现了一个特别影响性能的东西:info 日志,还是使用 41w行、25列、45.5m 数据,在 开始-数据读取完毕 之间每 1000 行打印一条 info 日志,缓存校验数据-校验完毕 之间每行打印 3+ 条 info 日志,日志框架使用 Slf4j。打印并持久化到磁盘 。下面是打印日志和不打印日志效率的差别
打印日志
![100000行级别数据的 Excel 导入优化之路](http://img.jiangsulong.com/230630/1549561T1-2.jpg)
文章插图
图片
不打印日志
![100000行级别数据的 Excel 导入优化之路](http://img.jiangsulong.com/230630/15495A250-3.jpg)
文章插图
图片
我以为是我选错 Excel 文件了,又重新选了一次,结果依旧
![100000行级别数据的 Excel 导入优化之路](http://img.jiangsulong.com/230630/1549561X5-4.jpg)
文章插图
图片
【100000行级别数据的 Excel 导入优化之路】缓存校验数据-校验完毕 不打印日志耗时仅仅是打印日志耗时的 1/10 !
总结提升Excel导入速度的方法:
- 使用更快的 Excel 读取框架(推荐使用阿里 EasyExcel)
- 对于需要与数据库交互的校验、按照业务逻辑适当的使用缓存 。用空间换时间
- 使用 values(),(),() 拼接长 SQL 一次插入多行数据
- 使用多线程插入数据,利用掉网络IO等待时间(推荐使用并行流,简单易用)
- 避免在循环中打印无用的日志
推荐阅读
- 我们市场上面遇到的价值上千万级别的钱币,遇到最好绕道走
- 相机sd卡数据恢复
- 百万级别的天空蓝翡翠,究竟长什么样子?
- 如何减少数据中心网络拥塞
- 数据中心网络拥塞的原因及解决办法
- 值得与Python结合使用的五个新颖的数据科学工具
- 数据库透明加密技术大总结
- 数据中心末端配电的数字化方案
- AI和大数据是一对 “孪生兄弟”
- 企业数据加密系统