大数据量报表导出EXCEL(org.apache.poi)

大数据量报表导出EXCEL(org.apache.poi)

最近项目上由于数据量过大 导致报表的导出耗时间很长,而且产生大量的垃圾对象。导致不停的进行垃圾回收 占用性能,最总服务挂掉。

解决:

1.减少数据量

导出报表数据量过大,主要原因还是因为用户 在导出的时候并没有选择条件(时间、地市等)。从而进行了全量导出。可以对查询量进行限制。数据量过大的就不进行导出。

2.更换导出对象

之前导出使用的XSSFWorkbook对象,在apache的官网:https://poi.apache.org/components/spreadsheet/how-to.html#sxssf 建议在导出大数据量的数据的时候 使用SXSSFWorkbook对象。

3. 多线程

由于查询SQL的时候 还是很慢。而客户端很有可能会超时,因此 采用多线程。
1.前段调用报表导出请求
2.后端接收请求,新启线程 进行创建EXCEL文件。并直接进行返回
3.前段定时不断发送请求询问后端 报表是否导出完成。
4.后端完成文件的创建 后 返回文件到前段进行下载

你可能感兴趣的:(java,java)