解决mongo sort operation max
最近使用mongodb进行统计查询,遇到了下面的错误提示
mongo 错误提示:OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit
也许你遇到了跟我一样的问题,不知道如何解决
其原因是
Mongodb的sort操作是把数据拿到内存中再进行排序的,为了节约内存,默认给sort操作限制了最大内存为32Mb,当数据量越来越大直到超过32Mb的时候就自然抛出异常了.值得注意是,如果你使用 skip 和 limit 联合使用实际也会产生排序.
下面是两种方式,仅供参考
方法1:增加缓存
//查询值
db.runCommand({ "getParameter" : 1, "internalQueryExecMaxBlockingSortBytes" : 1 } )
//设置新值
db.adminCommand({"setParameter":1, "internalQueryExecMaxBlockingSortBytes":335544320})
方法2:增加索引
根据业务对排序的key进行建立索引
我采用的方式是第二种方法
参考文章,点击这里
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.gowhich.com ),版权所有,侵权必究。
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 Gowhich博客( https://www.gowhich.com ),版权所有,侵权必究。