Mongo报错: "Overflow sort stage bu
报错内容
类似 Overflow sort stage buffered data usage of 33557144 bytes exceeds internal limit of 33554432 bytes
报错场景
通过mongoexport --sort导出数据/其他场景
原因分析
文档大小超过了32MB。排序时会把数据都提到内存中, Mongo默认in-memory sort是32MB,所以会报这个错。
解决方案
1、添加索引
语法:db.collection.createIndex(keys, options)
注:语法中 Key 值为要创建的索引字段,1 为指定按升序创建索引,降序 -1。
例子:db.col.createIndex({"title":1})
2、查看、修改 sort 默认的 32MB(3.0以后版本可用)
> use admin
switched to db admin
> db.runCommand( { getParameter : 1, "internalQueryExecMaxBlockingSortBytes" : 1 } )
{ "internalQueryExecMaxBlockingSortBytes" : 33554432, "ok" : 1 }
> db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes:50151432})
{ "was" : 33554432, "ok" : 1 }
注:50151432为设置的新内存(50M)
参考资料
MongoDB: 解决 Overflow sort stage buffered data 错误
mongodb: "Overflow sort stage buffered data usage of 33557904 bytes exceeds internal limit of 33554"