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 一次多少条
  • 相关阅读:
    Andorid之官方导航栏Toobar
    使用ECharts实现数据图表分析
    内存优化之封装九宫格
    xUtils框架的使用详解
    IOS 生成本地验证码
    android之官方导航栏ActionBar(三)之高仿优酷首页
    Android官方导航栏ActionBar(二)—— Action View、Action Provider、Navigation Tabs的详细用法
    IOS 实现界面本地化(国际化)
    Windows7 64位压缩包安装MySQL5.7.9
    Debian 8.2 下安装MySQL5.7.9 Generic Binaries
  • 原文地址:https://www.cnblogs.com/dj66194/p/9118123.html
Copyright © 2011-2022 走看看