一、背景 大家在日常的开发中,excel导入导出是非常常见的需求,大部分公司因为业务量比较小,操作的数据量都是几千、几万,这个级别的数据量,我们采用apache的poi很轻松可以搞定,但如果遇到大型互联网公司动不动就百万级别的用户体量,poi就会出现各种各样的问题,比较常见的现象就是内存OOM或者导出耗时特别久无响应,很显然,POI在百万级别的数据量处理,已经不合适了。 二、痛点 1、导入百万级别数据(excel)到DB,有什么痛点呢? 1)一次加载百万级别数据到内存,发生OOM? 2)导入时百万级别数据存储到DB如果循环一条条插入,数据库链接不够用? 2、导出百万级别数据(DB)到excel,有什么痛点? 1)一次查询百万级别数据到内存,mybatis查询超时报错? 2)一次加载百万级别数据到内存,发生OOM? 3)百万级别数据导出到Excel,写到一个Sheet中,能打开,不卡爆? 4)百万级别数据导出到Excel中一行一行写入Excel,频繁io操作,CPU飙高? 3、业务操作高峰期,后台管理员频繁操作导入导出excel,这个时候系统很容易就会因为内存溢出挂掉了。 那我们如何解决上面的痛点呢?那有没有什么好的解决方案能够有效的支撑百万级别的数据导入导出,而且系统的CPU、内存等核心指标不会出现明显波动呢?