easyexcel導入導出百萬條數據思路分析 導入萬條數據 一條數據200個字 一個文字2字節byte 一條數據相當于400byte 大約等于0.5kb 一萬條數據大概5000kb 相當于5M 導入模塊的jvm內存設置為8G 導入
easyexcel導入導出百萬條數據思路分析
導入萬條數據
一條數據200個字 一個文字2字節byte 一條數據相當于400byte 大約等于0.5kb
一萬條數據大概5000kb 相當于5M
導入模塊的jvm內存設置為8G
- 導入進行限制,系統只支持同時有200個人同時進行導入操作,通過redis進行記錄,操作結束后對redis中值進行減1,同時對當前在線導入的數據量進行限制,只允許同時導入 100萬條數據,通過redis記錄,新建一條導入數據保存到數據庫,同時發送一條mq消息給websocket,例如導入任務開始,此時消息會展示在界面上
- 通過導入傳遞的參數然后通過反射的方式去找到校驗類和保存類
- 讀取數據通過線程池進行多線程操作校驗,校驗時記錄錯誤數據,如果出現失敗存在一個list中,跳出保存,走上傳錯誤文件邏輯,將錯誤原因記錄在文件中
- 校驗成功后在一個事務中分批次保存數據 單次保存500條,保存后將已保存的數據clear,方便垃圾回收,保存出現錯誤后回滾事務
- 如果出現需要遠程調用feign的情況 增加seata 做控制
- 簡單保存則直接在excel中引入需要保存的service與mapper
導出百萬條數據
機器為16核 按照io操作
- 導出通過線程池控制,導出任務都放在線程池中運行,核心線程數設置為16,最大線程數設置為25,隊列大小設置為30,導出時先判斷隊列是否已經滿了,滿了則直接提示錯誤,沒滿則新建一條導出數據保存到數據庫,同時發送一條mq消息給websocket,例如導出任務開始,此時消息會展示在界面上
- 通過導出傳遞的參數反射獲取查詢的類,然后通過循環分頁去查詢結果,默認每次查詢100條,可以自定義查詢條數,將查詢進度實時展示在界面上
- 每次查詢后將結果寫入excel中
聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。