• 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中

  • 相关阅读:
    vscode配置django环境并创建django项目
    python gdal geopandas basemap cartopy安装
    jmeter之连接MySQL数据库
    四、集合
    哪些自动化工具赋能电商运营效率翻倍?
    springboot悠悠转二手网站毕业设计源码181134
    基于低代码平台实现的内外OA协同办公系统
    听劝!不要啥都不懂就学PMP!这100个考试关键点,带你直击考试现场
    python中的运算符
    C语言中动态内存管理
  • 原文地址:https://blog.csdn.net/itScholar001/article/details/134080038