Como aumentar o limite de dados em buffer?

16

Dentro do Ubuntu, criei uma coleção do MongoDB Db contendo 1 milhão de registros e, ao tentar executar um comando de classificação, recebi 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 outros comandos em grande escala contra os dados?

    
por Jon295087 24.07.2014 / 10:25

2 respostas

23

Isso pode acontecer devido a um bug como SERVER-13611 (por isso, verifique se você está na versão mais recente ), ou porque você está tentando classificar em um índice esparso em 2.6 , mas mais comumente é porque você está simplesmente tentando classificar muitos registros na memória sem um índice.

O limite específico que você está atingindo é intencional e é documentado aqui - não pode ser mudou, então você precisa reduzir o conjunto de resultados, ou usar um índice etc. para realizar o tipo.

Atualização (novembro de 2014): A próxima versão 2.8 (2.8.0-rc0 até o momento) permite que essa configuração seja ajustada da seguinte maneira:

db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: <limit in bytes>})

O valor padrão é 32MiB (33554432 bytes) e deve ser ajustado com cuidado - grandes classificações na memória podem fazer com que seu banco de dados pare (por isso houve um limite em primeiro lugar).

    
por Adam C 27.07.2014 / 03:04
2

Eu corri para o problema também ao classificar e paginar 200K + registros. A solução mais fácil parece ser adicionar um índice (para os atributos que você está classificando.

    
por max kaplan 28.05.2015 / 00:24

Tags