Mongo查詢百萬級數據性能問題及JAVA優化問題


Mongo查詢百萬級數據  使用分頁  skip和limit 效率會相當慢   那么怎么解決呢  上代碼

全部查詢數據也會特別慢

Criteria criteria = new Criteria();
List<Criteria> params = new ArrayList<>();
params.add(Criteria.where("is_deleted").is(0));
params.add(Criteria.where("is_pop").is(0));
Criteria[] cArr = new Criteria[params.size()];
criteria.andOperator(params.toArray(cArr));
Query query1 = new Query(criteria);
Sort.Order order = new Sort.Order(Sort.Direction.ASC, "_id");
int size = 2000;
int page = 0;
List<AreaSsuPriceMongoEntity> all = new ArrayList<>();
while (true) {
List<AreaSsuPriceMongoEntity> entities = areaSsuPriceMongoDao.findList(query1, order, 0, size);
if (CollectionUtils.isEmpty(entities)) {
break;
}
all.addAll(entities);
Criteria criteria2 = new Criteria();
String id = entities.get(entities.size() - 1).getId();
ObjectId objectId = new ObjectId(id);
if (params.size() > 2) {
params.remove(params.size() - 1);
}
params.add(Criteria.where("_id").gt(objectId));
Criteria[] cArr2 = new Criteria[params.size()];
criteria2.andOperator(params.toArray(cArr2));
query1 = new Query(criteria2);
}




java List 性能問題
List.removeAll 在大數據量的情況下 效率會特別低 包括 remove 尤其是 ArrayList
怎么解決 不使用ArrayList 或者重新記錄不需要刪除的數據存入list

java 百萬級數據 * 百萬級數據遍歷 效率是否高效?
可以分組處理...

查詢大數據量時 不可以直接全部查詢 一定要分頁查詢 循環查出然后addAll處理
查mongo 及 mysql 都是必要的

insert and update 數據庫時 一定要批量處理
不可以循環一條一條處理 效率特別低


數據量大的時候update數據時不可以全部一次性update
一定要分批 分頁處理 sublist 一次多少條


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM