由于公司做的是商业项目,代码不方便贴上来,只记录下思路。
项目中,有不少需要导入excel数据的地方,因为项目赶工期,没有考虑太多,直接实现了就完事了,在压测的时候,发现导入数据到几百条时就会出现前端连接超时,于是,优化成为了必做项。
先说说未优化前状态
前端上传文件至阿里云,后端通过ossAPI以流的方式下载到内存并逐条通过poi读取校验(业务原因,校验较多,也是只有几百条数据就超时的主要原因),成功数据存入数据库,失败数据上传至阿里云供用户下载修改后重新上传
优化思路
1.做成异步,同步只适用于少量数据。
2.利用poi从流中读取整个excel数据存入内存中再进行校验
3.查询校验条件时,分批次查询数据库(例如1000条每次),并存入内存
4.起多个线程,进行查询,校验,插入操作