No Ubuntu, criei uma coleção MongoDB Db contendo 1 milhão de registros e, ao tentar executar um comando de classificação, estou recebendo o seguinte erro:
"$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
"code" : 17144
Por favor, alguém pode descrever como aumentar o limite interno para que eu possa executar este e alguns outros comandos em grande escala contra os dados?
Respostas:
Isso pode acontecer devido a um bug como o SERVER-13611 (portanto, verifique se você está na versão mais recente) ou porque você está tentando classificar em um índice esparso no 2.6 , mas mais geralmente é porque você está simplesmente tentando classificar também muitos registros na memória sem um índice.
O limite específico que você está atingindo é intencional e está documentado aqui - ele não pode ser alterado, portanto, é necessário reduzir o conjunto de resultados ou usar um índice etc. para realizar a classificação.
Atualização (novembro de 2014): A próxima versão 2.8 (2.8.0-rc0 no momento em que foi escrita isso) agora permite que essa configuração seja alterada, da seguinte maneira:
O valor padrão é 32MiB (33554432 bytes) e deve ser ajustado com cuidado - classificações grandes na memória podem fazer com que seu banco de dados fique parado (é por isso que houve um limite em primeiro lugar).
fonte
Também me deparei com o problema ao classificar e paginar 200K + registros. A solução mais fácil parece ser adicionar um índice (para os atributos que você está classificando.
fonte