easyexcel导入导出百万条数据思路分析

简介: easyexcel导入导出百万条数据思路分析

easyexcel导入导出百万条数据思路分析

导入万条数据

一条数据200个字 一个文字2字节byte 一条数据相当于400byte 大约等于0.5kb

一万条数据大概5000kb 相当于5M

导入模块的jvm内存设置为8G

  1. 导入进行限制,系统只支持同时有200个人同时进行导入操作,通过redis进行记录,操作结束后对redis中值进行减1,同时对当前在线导入的数据量进行限制,只允许同时导入 100万条数据,通过redis记录,新建一条导入数据保存到数据库,同时发送一条mq消息给websocket,例如导入任务开始,此时消息会展示在界面上

  2. 通过导入传递的参数然后通过反射的方式去找到校验类和保存类

  3. 读取数据通过线程池进行多线程操作校验,校验时记录错误数据,如果出现失败存在一个list中,跳出保存,走上传错误文件逻辑,将错误原因记录在文件中

  4. 校验成功后在一个事务中分批次保存数据 单次保存500条,保存后将已保存的数据clear,方便垃圾回收,保存出现错误后回滚事务

  5. 如果出现需要远程调用feign的情况 增加seata 做控制

  6. 简单保存则直接在excel中引入需要保存的service与mapper

导出百万条数据

机器为16核 按照io操作

  1. 导出通过线程池控制,导出任务都放在线程池中运行,核心线程数设置为16,最大线程数设置为25,队列大小设置为30,导出时先判断队列是否已经满了,满了则直接提示错误,没满则新建一条导出数据保存到数据库,同时发送一条mq消息给websocket,例如导出任务开始,此时消息会展示在界面上

  2. 通过导出传递的参数反射获取查询的类,然后通过循环分页去查询结果,默认每次查询100条,可以自定义查询条数,将查询进度实时展示在界面上

  3. 每次查询后将结果写入excel中

目录
相关文章
|
7月前
|
SQL 缓存 easyexcel
面试官问10W 行级别数据的 Excel 导入如何10秒处理
面试官问10W 行级别数据的 Excel 导入如何10秒处理
273 0
|
7月前
|
easyexcel Java 关系型数据库
厉害了!12秒将百万数据通过EasyExcel导入MySQL数据库中
【5月更文挑战第12天】厉害了!12秒将百万数据通过EasyExcel导入MySQL数据库中
257 1
|
7月前
|
SQL 存储 数据库
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息
|
7月前
|
SQL 存储 数据库
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息(1)
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息(1)
|
数据挖掘 开发工具
Excle数据分析:按照筛选条件将表格分割成多个文件的VBA解决方案
Excle数据分析:按照筛选条件将表格分割成多个文件的VBA解决方案
158 0
|
7月前
|
存储 定位技术 数据处理
Python基于指定范围筛选并剔除Excel表格中的数据
Python基于指定范围筛选并剔除Excel表格中的数据
|
SQL Java 关系型数据库
从系统报表页面导出20w条数据到本地只用了4秒,我是如何做到的
最近有个学弟找到我,跟我描述了以下场景: 他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以。但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导出时还会出现堆溢出。 他知道是因为数据全部加载到jvm内存导致的堆溢出。所以只能对时间窗口做了限制。以避免因导出过数据过大而引起的堆溢出。最终拍脑袋定下个限制为:导出的数据时间窗口不能超过1个月。
|
运维 小程序 前端开发
基于小程序云开开发(统计学生信息并导出excel)1.0版本
基于小程序云开开发(统计学生信息并导出excel)1.0版本
123 0
基于小程序云开开发(统计学生信息并导出excel)1.0版本
|
数据库 索引 程序员
excel导入功能中去掉重复数据—解决思路
excel导入功能中去掉重复数据—解决思路 今天客户提出一个问题,能否在产品中2个子系统中的实现所有的excel导入功能过滤掉已有的数据。 我思考了一番,想到了3种大概的解决思路: 1、在插入每条数据的时候,查到对应的表找出是否存在对应的数据,如存在就跳过。
2081 0
|
SQL 关系型数据库 MySQL
mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。
mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。
311 0
mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。