真香!EasyExcel实现Excel百万级数据导出测验,高效低内存占用。 (记一次线上问题分析)

文章讲述了线上系统在尝试通过EasyExcel导出百万级数据时遇到的内存溢出问题,通过对不同每页大小的测试,发现EasyExcel在大数据导出时内存占用小且性能稳定。然而,系统崩溃可能与使用ApachePOI的性能问题及并发导出有关,强调了控制并发和优化查询策略的重要性。

一、线上问题

线上问题分析。前几天,某系统在尝试导出百万条明细时,导出时造成系统假死,内存溢出,随后系统崩溃。重启之后再次尝试导出同样的明细,结果依旧是系统崩溃。虽然没有拿到具体日志,但根据早前真香!EasyExcel实现Excel百万级数据导入,高效低内存占用 对百万数据导入的验证结果,进行了初步的分析,可能存在以下两个导致问题的原因:
原因一: Excel的导出过程中,系统使用了Apache POI,大量数据导出导致堆内存占用极大,甚至超过原本应有的百倍。这就容易发生堆内存不足的问题,从而使得系统假死。而在多次full gc仍无法释放足够内存后,系统最终崩溃。
原因二: 此外,系统在导出Excel过程中使用Easy Excel,却出现分页查询语句性能问题。对于普通分页查询,由于深度分页时越往后翻页速度越慢,因此可能拖累整个数据库,最终导致应用崩溃。但值得注意的是,Easy Excel在导入导出数据过程中,是基于硬盘逐行读写的模式,这意味着不存在内存占用问题,并通过上次的实验已得到了验证大量数据导入。

二、 本章目标

本次重点验证一下Easy Excle导出大量数据时的内存占用情况以及避免深分页的一种实现方案。

三、实验数据准备

实际数据: 单表,255999条数据,每行数据包含 94列,初始数据统计结果截图如下:

在这里插入图片描述

四、代码实现

关键代码截图如下:

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老D不是传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值