zoukankan      html  css  js  c++  java
  • mongodb Sort排序能够支持的最大内存限制为32M Plan executor error during find: FAILURE

    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
  • 相关阅读:
    小兔生仔和汽水换瓶的两个算法
    dpi 编程
    作者赠送的《我的第一本c++书》收到啦
    什么是程序员的优良品质
    如何把事情做对?
    学习应有的态度
    魔方数算法
    我的第二本c++教科书
    如何处理人际关系
    电动玩具的开发思路
  • 原文地址:https://www.cnblogs.com/chenjw-note/p/11898596.html
Copyright © 2011-2022 走看看