码迷,mamicode.com
首页 > 数据库 > 详细

mongodb Sort排序能够支持的最大内存限制为32M Plan executor error during find: FAILURE

时间:2019-11-20 16:54:28      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:min   code   ror   场景   大内存   cut   god   Plan   ann   

1.一个比较老的游戏服维护,关服维护后启动时报错

技术图片

 

 2.看到关于mongodb的报错,于是去查一下mongodb的日志

技术图片

 

 Plan executor error during find: FAILURE, stats

3.关于此报错

MongoDB Server中确认了对于Sort排序能够支持的最大内存限制为32M

在排序字段未利用到索引的情况下,若超过32M内存则会被Abort,语句直接返回报错。

4.结论

排序内存限制的问题
MongoDB使用内存进行排序的场景只有是Sort stage,官方文档有说明:

If MongoDB can use an index scan to obtain the requested sort order, the result will not include a SORT stage. Otherwise, if MongoDB cannot use the index to sort, the explain result will include a SORT stage.

意思大概是如果MongoDB可以使用索引扫描来进行排序,那么结果将不包括SORT stage。否则如果MongoDB无法使用索引进行排序,那么查询计划将包括SORT stage。

使用索引扫描的效率是远大于直接将结果集放在内存排序的,所以MongoDB为了使查询语句更有效率的执行,限制了 排序内存的使用,因而规定了只能使用 32M,该种考虑是非常合理的。

但也可通过手工调整参数进行修改(不建议):

# 比如调大到 128M
## 在线调整
> db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:134217728})

## 持久到配置文件
setParameter:
internalQueryExecMaxBlockingSortBytes: 134217728

 

mongodb Sort排序能够支持的最大内存限制为32M Plan executor error during find: FAILURE

标签:min   code   ror   场景   大内存   cut   god   Plan   ann   

原文地址:https://www.cnblogs.com/chenjw-note/p/11898596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!