在 Ubuntu 中,我创建了一个包含 100 万条记录的 MongoDB Db 集合,当尝试对其运行排序命令时,出现以下错误:
"$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
"code" : 17144
请任何人描述如何增加内部限制,以便我可以对数据执行此命令和其他一些大规模命令?
这可能是因为像SERVER-13611这样的错误(所以请确保您使用的是最新版本),或者因为您正在尝试对2.6 中的稀疏索引进行排序,但更常见的是因为您也只是试图进行排序内存中的许多记录没有索引。
您达到的特定限制是有意的,并在此处记录- 它无法更改,因此您需要减少结果集,或使用索引等来执行排序。
更新(2014 年 11 月):即将发布的 2.8 版本(撰写本文时为 2.8.0-rc0)现在允许调整此设置,如下所示:
默认值为 32MiB(33554432 字节),应该小心调整 - 内存中的大排序可能会导致数据库停止运行(这就是为什么一开始就有限制)。
在对 200K+ 记录进行排序和分页时,我也遇到了这个问题。最简单的解决方案似乎是添加一个索引(用于您正在排序的属性。