mongodb小知识 - MongoDB Sort : how to fix maximum RAM exceeded error
MongoDB Sort : how to fix maximum RAM exceeded error
针对这个问题具体的报错信息如下
Error: error: {
"ok" : 0,
"errmsg" : "Executor error during find command :: caused by :: errmsg: \"Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.\"",
"code" : 96,
"codeName" : "OperationFailed"
}
解决办法:
1、加索引(这个是比较常用的方式)
2、增加RAM大小
db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: 335544320})
具体的大小可以根据具体的情况来设置
查看RAM大小的话,使用下面的命令
db.runCommand( { getParameter : 1, "internalQueryExecMaxBlockingSortBytes" : 1 } )
3、使用aggregate 命令
如果用aggregate的话,通过设置选项allowDiskUse的值为true,允许临时将数据写到文件中,具体使用参考如下
db.getCollection('users').aggregate( [
{ $sort : { age : 1} }
],
{ allowDiskUse: true }
)
如果在排序的时候想要得到一个好的性能,最好是创建索引
db.users.createIndex( { age: 1 } )
参考文章点击这里
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.gowhich.com ),版权所有,侵权必究。
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 Gowhich博客( https://www.gowhich.com ),版权所有,侵权必究。