如何增加缓冲数据限制?

如何增加缓冲数据限制?

在 Ubuntu 中,我创建了一个包含 100 万条记录的 MongoDB Db 集合,当尝试对其运行排序命令时,出现以下错误:

 "$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
 "code" : 17144

请问有人能描述一下如何增加内部限制,以便我可以针对数据执行这个和其他一些大规模命令吗?

答案1

这可能是由于以下错误导致的:服务器-13611(因此请确保您使用的是最新版本),或者因为您正在尝试在 2.6 中对稀疏索引进行排序,但更常见的情况是,您只是试图在没有索引的情况下对内存中的太多记录进行排序。

你达到的特定限制是故意的,并且记录在这里- 它无法改变,因此您需要减少结果集,或者使用索引等来执行排序。

更新(2014 年 11 月):即将发布的 2.8 版本(撰写本文时为 2.8.0-rc0)现在允许调整此设置,如下所示:

db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: <limit in bytes>})

默认值为 32MiB(33554432 字节),应小心调整 - 大量内存排序可能会导致数据库陷入停顿(这就是为什么首先存在限制)。

答案2

在对 200K+ 条记录进行排序和分页时,我也遇到了这个问题。最简单的解决方案似乎是为要排序的属性添加索引 (。

相关内容