海量数据的优化思路

 

海量数据的优化思路

 

1,业务上实现逻辑优化

2,sql优化加索引---条件字段,left join on字段,查询的列尽量少(在自连接的时候有重复的数据(连接字段值重复)会指数级的增加连接,索引也打折扣)

3,用java list分页结合future分几页就发出几个线程同步执行,然后futue.get()等待都返回往下执行

4,用存储过程实现复杂的逻辑,大量数据业务

5,用redis内存,用java内存减少存储过程的循环次数

 

 有了思路之后相关的繁杂的代码实现可以网上直接百度

 

 

 

 

 

================java list分页示例

 

 if(bemps !=null && bemps.getData()!=null){
//              if (bemps.getData().size()<1000){
//                  //z直接处理
//              }else if(bemps.getData().size()>=1000){
int pageSize=999;
                        int totalPageNum = (bemps.getData().size()  +  pageSize  - 1) / pageSize;
                        Map> mpfinancialSalesEmploymentPage = new HashMap>();
                        for(int p =1 ;p<=totalPageNum;p++){
                            List financialSalesEmploymentPage = new ArrayList();
                            int currIdx = (p > 1 ? (p -1) * pageSize : 0);
                            for (int i = 0; i < pageSize && i < bemps.getData().size() - currIdx; i++) {
                                FinancialSalesEmployment memberArticleBean = bemps.getData().get(currIdx + i);
                                financialSalesEmploymentPage.add(memberArticleBean);
                            }
                            mpfinancialSalesEmploymentPage.put(p+"",financialSalesEmploymentPage);
                            System.out.println("==========list分页====="+financialSalesEmploymentPage.size());
                        }

//              }
for (Map.Entry> entry : mpfinancialSalesEmploymentPage.entrySet()) {
//                    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
List idtys = new ArrayList();
                            for( FinancialSalesEmployment b : entry.getValue()){
                                if(b.getIdentityNo()!=null){
                                    idtys.add(b.getIdentityNo());
                                }


                            }
                            String mbs="";
                            if(idtys != null && idtys.size()>0){
                                mbs = Joiner.on(",").join(idtys);
                            }
                            cibc.setId_cards(mbs);
                            BaseResponseInterface>  cis = getCusInfo(cibc);
                            if(cis!=null&& cis.getData()!=null && cis.getData().size()>0){

                                cisAll.getData().addAll(cis.getData());
                            }
                        }

                    }

你可能感兴趣的:(其他,其他)