Dalam Ubuntu saya telah membuat koleksi Db MongoDB yang berisi 1 juta catatan, dan ketika mencoba menjalankan perintah pengurutan terhadapnya, saya mendapatkan kesalahan berikut:
"$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
"code" : 17144
Adakah yang bisa menjelaskan bagaimana cara meningkatkan batas internal sehingga saya dapat menjalankan ini dan beberapa perintah skala besar lainnya terhadap data?
Jawaban:
Ini dapat terjadi karena bug seperti SERVER-13611 (jadi pastikan Anda berada di versi terbaru), atau karena Anda mencoba untuk mengurutkan pada indeks jarang di 2.6 , tetapi lebih biasanya karena Anda hanya mencoba mengurutkan juga banyak catatan dalam memori tanpa indeks.
Batas spesifik yang Anda tekan adalah disengaja dan didokumentasikan di sini - itu tidak dapat diubah, jadi Anda perlu mengurangi set hasil, atau menggunakan indeks dll untuk melakukan pengurutan.
Pembaruan (November 2014): Rilis 2.8 mendatang (2.8.0-rc0 saat menulis ini) sekarang memungkinkan pengaturan ini untuk di-tweak, sebagai berikut:
Nilai defaultnya adalah 32MiB (33554432 bytes) dan harus disesuaikan dengan hati-hati - jenis memori yang besar dapat menyebabkan database Anda terhenti (itulah sebabnya ada batasan di tempat pertama).
sumber
Saya mengalami masalah juga ketika menyortir dan membuat halaman 200K + catatan. Solusi termudah adalah menambahkan indeks (untuk atribut yang Anda sortir.
sumber