当前位置 博文首页 > RemainderTime:优化(一)mysql批量分段入库

    RemainderTime:优化(一)mysql批量分段入库

    作者:[db:作者] 时间:2021-07-12 21:46

    批量分段插入

    • 当操作的数据量过大时,为减少数据库的压力,进行分段入库
        		//注入service
        		@Autowired
       			 private StoreSalesRankingService storeSalesRankingService;
    			 //添加对象集合
    			 List<StoreSalesRanking> insertList =new ArrayList<>();
    			 //更新对象集合
    			 List<StoreSalesRanking> updateList =new ArrayList<>();
    			 ...... 
    			 //业务逻辑,分别插入到对应的list集合中
    			 ......
    			//批量插入
                if(CollectionUtil.isNotEmpty(insertList)){//判空
                    int segmentLimit = 20;//默认数据条数
                    while (insertList.size()>segmentLimit){  //分段入库,解决数据大sql超长出错的问题
                        List<StoreSalesRanking> segData = insertList.subList(0,segmentLimit);
                        storeSalesRankingService.saveBatch(segData);
                        //清除本次操作完成的对象
                        insertList.subList(0,segmentLimit).clear();
                    }
                    //操作不满默认数据条数,剩余的数据
                    storeSalesRankingService.saveBatch(insertList);
                }
                //批量更新
                if(CollectionUtil.isNotEmpty(updateList)){
                    int segmentLimit = 20;
                    while (updateList.size()>segmentLimit){
                        List<StoreSalesRanking> segData = updateList.subList(0,segmentLimit);
                        storeSalesRankingService.updateBatchById(segData);
                        updateList.subList(0,segmentLimit).clear();
                    }
                    storeSalesRankingService.updateBatchById(updateList);
                }
    
    

    哈哈,完成,不要忘了一键三连,支持支持博主呀。

    cs