W Ubuntu stworzyłem kolekcję MongoDB Db zawierającą 1 milion rekordów, a gdy próbuję uruchomić przeciwko niej polecenie sortowania, pojawia się następujący błąd:
"$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
"code" : 17144
Czy ktoś może opisać, jak zwiększyć limit wewnętrzny, abym mógł wykonać to i kilka innych dużych poleceń przeciwko danym?
Odpowiedzi:
Może się to zdarzyć z powodu błędu, takiego jak SERVER-13611 (więc upewnij się, że korzystasz z najnowszej wersji) lub ponieważ próbujesz sortować według rzadkiego indeksu w wersji 2.6 , ale częściej dzieje się tak, ponieważ po prostu próbujesz sortować zbyt wiele zapisów w pamięci bez indeksu.
Konkretny limit, który osiągasz, jest celowy i jest tutaj udokumentowany - nie można go zmienić, więc musisz zmniejszyć zestaw wyników lub użyć indeksu itp., Aby wykonać sortowanie.
Aktualizacja (listopad 2014 r.): Nadchodzące wydanie 2.8 (2.8.0-rc0 w chwili pisania tego tekstu) umożliwia teraz dostosowanie tego ustawienia w następujący sposób:
Wartość domyślna to 32 MB (33554432 bajty) i należy ją ostrożnie dostosowywać - duże sortowanie w pamięci może spowodować zatrzymanie bazy danych (dlatego na pierwszym miejscu był limit).
źródło
Wpadłem również na ten problem podczas sortowania i paginowania rekordów o wielkości ponad 200 000. Najłatwiejszym rozwiązaniem wydaje się dodanie indeksu (dla sortowanych atrybutów).
źródło