MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Tamanhos de arquivo MongoDB GridFS enormes para arquivos relativamente pequenos


OK; depois de muita pesquisa, parece que o MongoDB pré-aloca espaço nos arquivos de tamanho exponencial até 2Gb depois disso cada arquivo será 2G.

http://www.mongodb.org/display/DOCS/Excessive+Disk +Espaço

Meu programa de teste adiciona os arquivos de 80Mb, dentro dos arquivos de fundo (.0 - .7 etc) e à medida que os pedaços de dados começam a ser gravados no último arquivo, o Mongo pré-aloca outro arquivo exponencialmente maior que o anterior.

Portanto, o primeiro arquivo de 80Mb, preenche o arquivo de 16Mb, o arquivo de 32Mb e os arquivos de fundo de 64Mb e devido aos metadados ocupam um pouco mais de espaço e devem invadir um pouco o arquivo de 128Mb, isso aciona o mongo para pré-alocar um arquivo de 256Mb totalizando 496 MB; à medida que mais arquivos são adicionados, mais arquivos são pré-alocados e quando 2Gb é atingido na minha máquina de teste, o Mongo não consegue acessar o espaço e entra em colapso.

Portanto, embora pareça que um arquivo de 80Mb ocupe muito mais espaço do que deveria - faz sentido de maneira indireta.

Isso pode ser desativado executando mongod com --noprealloc, embora isso seja recomendado apenas para máquinas de teste.

Obrigado por suas respostas!