In Ubuntu habe ich eine MongoDB Db-Auflistung mit 1 Million Datensätzen erstellt. Beim Versuch, einen Sortierbefehl für diese Auflistung auszuführen, wird die folgende Fehlermeldung angezeigt:
"$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
"code" : 17144
Kann jemand beschreiben, wie das interne Limit erhöht werden kann, damit ich dieses und einige andere umfangreiche Befehle für die Daten ausführen kann?
Antworten:
Dies kann an einem Fehler wie SERVER-13611 liegen (stellen Sie also sicher, dass Sie sich auf der neuesten Version befinden), oder daran, dass Sie versuchen, in 2.6 nach einem spärlichen Index zu sortieren. Meistens liegt es jedoch daran, dass Sie einfach versuchen, auch zu sortieren viele Datensätze im Speicher ohne Index.
Das von Ihnen festgelegte Limit ist beabsichtigt und wird hier dokumentiert. Es kann nicht geändert werden. Daher müssen Sie die Ergebnismenge reduzieren oder einen Index usw. verwenden, um die Sortierung durchzuführen.
Update (November 2014): Mit der bevorstehenden Version 2.8 (2.8.0-rc0 zum Zeitpunkt der Veröffentlichung dieses Dokuments) kann diese Einstellung jetzt wie folgt angepasst werden:
Der Standardwert ist 32 MB (33554432 Byte) und sollte mit Bedacht angepasst werden. Große In-Memory-Sortierungen können dazu führen, dass Ihre Datenbank zum Stillstand kommt (weshalb es überhaupt eine Beschränkung gab).
quelle
Ich bin auch auf das Problem gestoßen, als ich mehr als 200.000 Datensätze sortiert und paginiert habe. Die einfachste Lösung scheint darin zu bestehen, einen Index (für die Attribute, nach denen Sie sortieren) hinzuzufügen.
quelle