В Ubuntu я создал коллекцию MongoDB Db, содержащую 1 миллион записей, и при попытке выполнить для нее команду сортировки я получаю следующую ошибку:
"$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 г.) . Предстоящий выпуск 2.8 (версия 2.8.0-rc0 на момент написания этой статьи) теперь позволяет настраивать этот параметр следующим образом:
Значение по умолчанию составляет 32 МБ (33554432 байта), и его следует корректировать с осторожностью - большие сортировки в памяти могут привести к остановке вашей базы данных (именно поэтому изначально был предел).
источник
Я столкнулся с проблемой также при сортировке и разбивке на страницы записей по 200K +. Кажется, самое простое решение - добавить индекс (для атрибутов, по которым вы сортируете).
источник