Query failed with error code 96 and error message 'Executor error during find command: OperationFail
来源:互联网 发布:java经典书籍推荐 编辑:程序博客网 时间:2024/06/11 14:22
Query failed with error code 96 and error message 'Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.' on server
刚开始还以为是查询得到的内容比较大,所以 指定字段 即指定查询返回的字段,我用的是 Spring data mongo 的 query()
大致方法如下
Query query = Query.query(new Criteria()); PageRequest pageRequest=new PageRequest(pageNumber - 1, pageSize); query.addCriteria(Criteria.where("fillStatus").gte(10)); query.skip(pageRequest.getOffset()).limit(pageSize).with(new Sort(Sort.Direction.DESC, "createTime")); long totalCount=this.mongoDao.count(query,HealthQues.class); int totalPage=0; if(totalCount%pageSize==0){ totalPage=Integer.parseInt(totalCount/pageSize+""); }else{ totalPage=Integer.parseInt(totalCount/pageSize+"")+1; }
//指定返回字段
query.fields().include("id");
query.fields().include("memberId");
等等、、、这里指定一个就返回一个,指定俩个就返回两个
List<HealthQues> healthQuesList=this.mongoDao.find(query,HealthQues.class);//程序运行到这里报错!!!!
结果查询到仍然报错,
原因比较明确:Sort operation used more than the maximum 33554432 bytes of RAM.
,33554432 bytes
算下来正好是32Mb
,而mongodb的sort
操作是把数据拿到内存中再进行排序的,为了节约内存,默认给sort
操作限制了最大内存为32Mb
,当数据量越来越大直到超过32Mb
的时候就自然抛出异常了!解决方案有两个思路,一个是既然内存不够用那就修改默认配置多分配点内存空间;一个是像错误提示里面说的那样创建索引。
首先说如何修改默认内存配置,在Mongodb
命令行窗口中执行如下命令即可:
- 1
- 1
我直接把内存扩大了10倍,变成了320Mb。从这里可以看出,除非你服务器的内存足够大,否则sort
占用的内存会成为一个严重的资源消耗!然后是创建索引,也比较简单:
- 1
- 2
- 1
- 2
其中1
表示升序排列,-1
表示降序排列。索引创建之后即时生效,不需要重启数据库和服务器程序,也不需要对原来的数据库查询语句进行修改。创建索引的话也有不好的地方,会导致数据写入变慢,同时Mongodb
数据本身占用的存储空间也会变多。不过从查询性能和服务器资源消耗这两方面来看,通过创建索引来解决这个问题还是最佳的方案!
- Query failed with error code 96 and error message 'Executor error during find command: OperationFail
- mongodb 报错:Query failed with error code 13 and error message 'not authorized for query on ..."
- com.mongodb.MongoQueryException: Query failed with error code 13
- error: linker command failed with exit code 1
- Error:Command /usr/bin/codesign failed with exit code 1
- Command python setup.py egg_info failed with error code 1
- Command "python setup.py egg_info" failed with error code 10
- Error description: Error during query execution. Operation 'setPosition' failed.
- Compiler Error Message: The compiler failed with error code 128. 的问题解决
- Error:error: linker command failed with exit code 1 (use -v to see invocation)
- Error:error: linker command failed with exit code 1 (use -v to see invocation)
- Apple Mach-O Linker Error clang: error: linker command failed with exit code 1
- command/usr/bin/codesign failed with exit code 1- code sign error
- Preverification failed with error code 1.
- OPatch failed with error code 73
- compile" failed with error code 1 解决办法
- OPatch failed with error code 73
- failed: Error during WebSocket handshake: Unexpected response code: 200
- Add Two Numbers--leetcode
- 二、web应用组织结构
- 通用的事件侦听器函数
- TypeScript模块整理(三)使用其他JavaScript库
- jQuey基础(一)
- Query failed with error code 96 and error message 'Executor error during find command: OperationFail
- Martin Fowler的《微服务》
- 位置无关码、位置有关码、链接地址、加载地址
- RxJava系列教程之变换篇(三)
- 蓝桥杯 ADV-110 算法提高 温度转换
- 7-4
- mybatis传入map参数之后xml文件中取值问题
- 如何优雅地测量一只猫的体积
- 解决VS2015启动出现“cannot find one or more components .Please reinstall the application”