逐笔处理优化为批量处理 针对数据库、redis等减少网络交互,提升性能【附代码】

今天爱分享给大家带来逐笔处理优化为批量处理 针对数据库、redis等减少网络交互,提升性能【附代码】,希望能够帮助到大家。
针对数据库的读,数据量大时用分页读
具体写法看持久化框架是否支持以及数据库,以下是oracle我比较推荐的写法


select *
 from (select a.*, rownum rowno
         from (select t.*
                 from test t
                order by t.create_date desc) a
        where rownum <= 20) b
where b.rowno >= 11;



针对批量数据库的更新或redis操作,可分批次3000条(具体需根据实际测试情况)处理提交


//对 allList 操作
List tmpList = new ArrayList<>();
for(int i=0; i < allList.size(); i++){
   tmpList.ad(allList.get(i));
   if(i%5000 ==0){
      handle(tmpList);
      ...
      tmpList=new ArrayList<>();
   } 
}
handle(tmpList);



特殊场景更新可用in条件
针对oracle in的1000条限制:update… where orderNo in (“”, “”, “”) or in(“”, “”, “”)

对文件读,采用批量读取后处理,避免全部读取造成内存溢出,逐笔处理效率差
项目可以用Spring Batch的话,建议FlatFileItemReader读文件。用java实现批量读文件处理我没有实现过,可以自行google网上找代码。

人已赞赏
数据库

文件的防止多进程读 数据库或FileLock防重复处理【附代码】

2020-12-23 14:34:54

数据库

手工开启事务注意保证commit或rollback及避免长事务【附代码】

2020-12-23 14:37:19