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大小
1 | db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: 335544320}) |
具体的大小可以根据具体的情况来设置
查看RAM大小的话,使用下面的命令
1 | db.runCommand( { getParameter : 1, "internalQueryExecMaxBlockingSortBytes" : 1 } ) |
3、使用aggregate 命令
如果用aggregate的话,通过设置选项allowDiskUse的值为true,允许临时将数据写到文件中,具体使用参考如下
1 | db.getCollection('users').aggregate( [ |
如果在排序的时候想要得到一个好的性能,最好是创建索引
1 | db.users.createIndex( { age: 1 } ) |
参考文章点击这里