在 Ubuntu 中,我创建了一个包含 100 万条记录的 MongoDB Db 集合,当尝试对其运行排序命令时,我收到以下错误:
"$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
"code" : 17144
Run Code Online (Sandbox Code Playgroud)
请谁能描述如何增加内部限制,以便我可以对数据执行此命令和其他一些大型命令?
Ada*_*m C 23
这可能是因为SERVER-13611之类的错误(因此请确保您使用的是最新版本),或者因为您尝试对2.6 中的稀疏索引进行排序,但更常见的是因为您也只是尝试进行排序内存中的许多记录没有索引。
您达到的特定限制是有意的,并在此处记录- 它无法更改,因此您需要减少结果集,或使用索引等来执行排序。
更新(2014 年 11 月):即将发布的 2.8 版本(撰写本文时为 2.8.0-rc0)现在允许调整此设置,如下所示:
db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: <limit in bytes>})
Run Code Online (Sandbox Code Playgroud)
默认值是 32MiB(33554432 字节),应该小心调整 - 大量的内存中的排序会导致你的数据库停止运行(这就是首先存在限制的原因)。