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 一次多少条
Mongo查询百万级数据性能问题及JAVA优化问题的更多相关文章
- EF查询百万级数据的性能测试--多表连接复杂查询
相关文章:EF查询百万级数据的性能测试--单表查询 一.起因 上次做的是EF百万级数据的单表查询,总结了一下,在200w以下的数据量的情况(Sql Server 2012),EF是可以使用,但是由于 ...
- EF查询百万级数据的性能测试
一.起因 个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...
- EF查询百万级数据的性能测试--单表查询
一.起因 个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...
- Mybatis 使用分页查询亿级数据 性能问题 DB使用ORACLE
一般用到了mybatis框架分页就不用自己写了 直接用RowBounds对象就可以实现,但这个性能确实很低 今天我用到10w级得数据分页查询,到后面几页就迭代了很慢 用于记录 1.10万级数据如下 [ ...
- Sql Server分页分段查询百万级数据四种项目实例
实际项目中需要实现自定义分页,最关键第一步就是写分页SQL语句,要求语句效率要高. 那么本文的一个查询示例是查询第100000-100050条记录,即每页50条的结果集.查询的表名为infoTab,且 ...
- SQL Server 百万级数据提高查询速度的方法
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
- SQL 百万级数据提高查询速度的方法
----------------[转] 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描.2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 ...
- SQL Server 百万级数据提高查询速度的方法(转)
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描.2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间! ...
随机推荐
- MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束
/* MySQL进阶13 常见六大约束: 1.not null 非空 2.default :默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10 3.primary key : 主键,用 ...
- 实践论:github搜索源码内容
github搜索源码内容 github搜索源码内容 github搜索源码内容
- 云计算(2)-Cloud是什么
Cloud是什么 compute cycles应建立在data center的附近而不是data center围绕着compute cycles Two kinds of clouds Example ...
- java中的assert
Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在J ...
- @EnableCircuitBreaker熔断超时机制
客户端请求服务端的时候总是报超时,默认熔断机制是1S
- Linux中drwxr-xr-x.的意思和权限
转载:https://blog.csdn.net/weixin_39209728/article/details/79729885 读(read),写(write),执行r(recute)简写即为(r ...
- Django REST framework+Vue 打造生鲜电商项目(笔记五)
一.viewsets实现商品详情页接口 (1)商品详情页只需要多继承一个类(mixins.RetrieveModelMixin)就可以了,(它的功能就是展示商品详情) class GoodsListV ...
- [ARIA] Accessible modal dialogs
Learn how to create a modal dialog with accessible keyboard and screen reader mechanics using the na ...
- Ftp客户端需要TSL功能的文件上传
Ftp客户端需要TSL功能 1.由于最近做了一个项目,需要把打包的文件传输到对方的FTP服务器上,但是用普通的java连接ftp客户端总是连接不上去,对方却说ftp客户端需要开通TSL功能. 直接上代 ...
- elment-ui的validate
https://blog.csdn.net/qq469234155/article/details/84034816 validate()时elment-ui封装好的用于对整个表单进行验证valida ...