Compactei recentemente minha coleção usando o comando:
db.<collectionName>.runCommand( "compact" )
E agora o tamanho da minha coleção parece ser maior que o tamanho do disco!
SECONDARY> db.<collectionName>.stats()
{
"ns" : "<databaseName>.<collectionName>",
"count" : 2937359,
"size" : 5681676492, # 5.6 GB
"avgObjSize" : 1934.2805874256433,
"storageSize" : 4292853728, # 4.2 GB
"numExtents" : 2,
"nindexes" : 2,
"lastExtentSize" : 2146426864,
"paddingFactor" : 1.669999999836597,
"flags" : 1,
"totalIndexSize" : 220735648,
"indexSizes" : {
"_id_" : 162326304,
"e_1_" : 58409344
},
"ok" : 1
}
Não entendo como isso é possível. Todas as coleções do mongodb não são sempre backup por disco?
Alguém pode explicar esses resultados?
validate
?Respostas:
storageSize
é a soma de todas as extensões para esses dados, excluindo índices.Para que a coleção ocupe 2 extensões, elas são ~ 2 GB cada, portanto, ~ 4 GB.
size
inclui índices e acredito que outras coisas aumentam o número. Nenhum dos dois realmente representa o tamanho adequado no disco. Para o tamanho do disco,db.stats()
possui um campo de tamanho de arquivo mais próximo do que você deseja, acho que está procurando.O manual é um pouco melhor para descrever o que os vários campos significam, veja aqui as coleções:
http://docs.mongodb.org/manual/reference/collection-statistics/
E aqui para estatísticas do banco de dados:
http://docs.mongodb.org/manual/reference/database-statistics/
Algumas outras informações potencialmente relevantes:
O comando compact não encolhe nenhum arquivo de dados; desfragmenta apenas o espaço excluído para que objetos maiores possam reutilizá-lo. O comando compact nunca excluirá ou reduzirá os arquivos do banco de dados e, em geral, requer espaço extra para realizar seu trabalho, geralmente no mínimo uma extensão extra.
Se você reparar o banco de dados, ele essencialmente reescreverá os arquivos de dados do zero, o que removerá o preenchimento e os armazenará no disco da maneira mais eficiente possível. No entanto, você precisará ter aproximadamente o dobro do tamanho do disco para fazê-lo (na verdade menos, mas é um guia decente).
Outra coisa a ter em mente aqui - conserte e remova o preenchimento compacto. O fator de preenchimento varia entre 1 (nenhuma movimentação de documentos causada pelo aumento de documentos) e 2 (muitas movimentações causadas pelo aumento de documentos). Seu fator de preenchimento de ~ 1,67 indica que você está crescendo (e, portanto, causando movimentos) bastante.
Ao compactar ou reparar um banco de dados, você remove esse preenchimento - o crescimento subsequente de documentos desencadeia ainda mais movimentos do que antes. Como as movimentações são operações relativamente caras, isso pode ter um sério impacto no seu desempenho. Mais informações aqui:
http://www.mongodb.org/display/DOCS/Padding+Factor
fonte
Para mongodb> 3.x
Para db.getCollection ('name'). Stats ()
Para db.stats ()
Podemos excluir espaço ou furo não utilizado dessa
Após executar o comando compact ou repair, podemos obter o tamanho exato do armazenamento e a diferença de tamanho dos dados.
Técnica de compressão em mongodb com fio
fonte