zoukankan      html  css  js  c++  java
  • 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 一次多少条
  • 相关阅读:
    退背包
    杜教筛BM
    Petya and Array CodeForces
    AC自动机模板
    KMP模板
    Docker系列器九:docker-compose与docker-compose.yml语法
    Fabric的简单Web应用
    ubuntu防火墙
    ubuntu16.04 HyperLedger Fabric 1.2.0 开发环境搭建
    crypto-config.yaml
  • 原文地址:https://www.cnblogs.com/dj66194/p/9118123.html
Copyright © 2011-2022 走看看