• 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
  • 相关阅读:
    MySql 学习之 一条更新sql的执行过程
    MySql 学习之 一条查询sql的执行过程
    VUE基本介绍
    ESMAScript6基本介绍
    npm
    tensorflow2.0 评估函数
    网页引入mathjax,latex
    Veno File Manager
    tensorflow 测量工具,与自定义训练
    tensorflow自定义网络结构
  • 原文地址:https://www.cnblogs.com/chenjw-note/p/11898596.html
Copyright © 2020-2023  润新知