100000行级别数据的 Excel 导入优化之路( 三 )

这里多数使用到很多 Java8 的API,不了解的朋友可以翻看我之前关于 Java 的博客 。方法使用起来很简单
InsertConsumer.insertData(feeList, arrearageMapper::insertList);其他影响性能的内容日志避免在 for 循环中打印过多的 info 日志
在优化的过程中,我还发现了一个特别影响性能的东西:info 日志,还是使用 41w行、25列、45.5m 数据,在 开始-数据读取完毕 之间每 1000 行打印一条 info 日志,缓存校验数据-校验完毕 之间每行打印 3+ 条 info 日志,日志框架使用 Slf4j。打印并持久化到磁盘 。下面是打印日志和不打印日志效率的差别
打印日志

100000行级别数据的 Excel 导入优化之路

文章插图
图片
不打印日志
100000行级别数据的 Excel 导入优化之路

文章插图
图片
我以为是我选错 Excel 文件了,又重新选了一次,结果依旧
100000行级别数据的 Excel 导入优化之路

文章插图
图片
【100000行级别数据的 Excel 导入优化之路】缓存校验数据-校验完毕 不打印日志耗时仅仅是打印日志耗时的 1/10 !
总结提升Excel导入速度的方法:
  • 使用更快的 Excel 读取框架(推荐使用阿里 EasyExcel)
  • 对于需要与数据库交互的校验、按照业务逻辑适当的使用缓存 。用空间换时间
  • 使用 values(),(),() 拼接长 SQL 一次插入多行数据
  • 使用多线程插入数据,利用掉网络IO等待时间(推荐使用并行流,简单易用)
  • 避免在循环中打印无用的日志




推荐阅读