Nel mio database mongo, ho una collezione limitata a 5 GB, una a 10 MB e poche non limitate. Nessuno di quelli senza limite contiene più di 20 documenti di piccole dimensioni.Il database Mongo occupa molto più spazio su disco di
Dopo un lungo (4h) test di stress, che scrive solo su una raccolta con limite di 5 GB, il mio database utilizza 18 GB.
Questo è quello che dice il mio db.stats (valori in MB):
data-db:PRIMARY> db.stats(1024*1024)
{
"db" : "data",
"collections" : 9,
"objects" : 8723395,
"avgObjSize" : 208.8405255064112,
"dataSize" : 1737,
"storageSize" : 5130,
"numExtents" : 12,
"indexes" : 19,
"indexSize" : 2534,
"fileSize" : 18423,
"nsSizeMB" : 16,
"ok" : 1
}
e questo è 5GB statistiche di raccolta (valori in MB):
data-db:PRIMARY> db.sms_message_event.stats(1024*1024)
{
"ns" : "data.sms_message_event",
"count" : 8723300,
"size" : 1737,
"avgObjSize" : 0.00019912189194456226,
"storageSize" : 5120,
"numExtents" : 3,
"nindexes" : 6,
"lastExtentSize" : 1026,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 2534,
"indexSizes" : {
"_id_" : 395,
"t_1_when_-1" : 475,
"smsc_message_id_1" : 185,
"user_id_1_t_1_when_1" : 481,
"message_id_1" : 318,
"virtual_number_recipient_when_index" : 678
},
"capped" : true,
"max" : 2147483647,
"ok" : 1
}
Allora perché è così tanto fileSize più grande di storageSize? Non riesco nemmeno a eseguire repairDatabase() ora, ma ho provato compact() su ogni raccolta non limitata, senza risultati. In realtà, era previsto che db fosse pulito prima dello stress test. Voglio dire che i file sono stati cancellati, non solo le collezioni sono state eliminate.
Da registri È possibile visualizzare file di dati aggiuntivi creati durante lo stress test, in intervalli di ~ 1 ora.
Alcuni tronchi: http://pastie.org/private/t8u9caxstafbjdybgwtsfw
UPDATE: Dopo un'altra notte, e un altro passaggio di stress test 4h, è 28GBs :(
data-db:PRIMARY> db.stats(1024*1024)
{
"db" : "data",
"collections" : 9,
"objects" : 8724995,
"avgObjSize" : 208.840894006243,
"dataSize" : 1737,
"storageSize" : 5130,
"numExtents" : 12,
"indexes" : 19,
"indexSize" : 2590,
"fileSize" : 28658,
"nsSizeMB" : 16,
"ok" : 1
}
Ecco come funziona mongoDB ... prealloca i file di dati in una dimensione particolare. Puoi leggere maggiori informazioni qui: http://docs.mongodb.org/manual/faq/storage/ – c0deNinja
Se si tratta di un piccolo database potresti voler usare 'smallfiles' che usa una dimensione di file di dati di default molto più piccola. .. http://docs.mongodb.org/manual/reference/configuration-options/#smallfiles – c0deNinja
Beh, ma ho capito che prealloca un file in anticipo. La dimensione massima del file allocata è 2 GB. I nostri dati hanno 5 GB - vedi 'storageSize' (solo inserimenti, niente rimozioni, poiché questa è una collezione limitata). Come mai il totale è andato a 18 GB? – adamw