Mongodb sort排序时内存报错

背景

在使用node.js+mongodb开发的后端项目,在查询时,使用了排序,出现如下报错

Mongodb: Sort operation used more than the maximum 33554432 bytes of RAM

Mongodb的sort操作是把数据拿到内存中再进行排序的,默认给sort操作分配的内存为32MB,当查询数据量比较大时,超过32MB,则报错

解决方案有个思路

1、分配多点排序内存(增加10倍)

db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:335544320})
// 若内存足够,可以考虑,但是,这将比较消耗资源

2、按错误提示,创建索引

db.myCollection.createIndex({fieldName: 1})  // 1为升序,-1为降序
db.myCollection.getIndexes()  //查看当前collection的索引
// 创建索引将导致以下两点问题
// 1. 写数据变慢
// 2. 索引本身站用存储
发布了88 篇原创文章 · 获赞 3 · 访问量 5497

猜你喜欢

转载自blog.csdn.net/youlinhuanyan/article/details/103391106
今日推荐