2012-07-23 16 views
5

Voglio usare mongodb per il mio nuovo progetto. il problema è che mongo utilizza i file pre-allocati:mongo db --smallfiles switch svantaggi

Ogni file di dati è preallocato per una dimensione particolare. (Questo è fatto per prevenire la frammentazione del file system, tra le altre ragioni.) Il primo nome file per un database è .0, quindi .1, ecc .0 sarà 64 MB, .1 128 MB, ecc., Fino a 2 GB. Una volta che i file raggiungono 2 GB di dimensione, ogni file successivo è anche 2 GB. Pertanto, se l'ultimo file di dati presente è, ad esempio, 1 GB, il file potrebbe essere vuoto al 90% se è stato creato di recente.

da qui: http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

E la sua normale avere molti file da 2 GB con niente dentro. c'è un interruttore --smallfiles, per limitare questo file a 512MB

--smallfiles => Utilizzare una dimensione più piccola iniziale del file (16 MB) e la dimensione massima (512 MB)

voglio sapere usare i file piccoli è un bene per la produzione? e quali sono i suoi inconvenienti.

c'è uno switch noprealloc ma non è buono in produzione. ma non ci sono annotazioni sui piccoli file.

risposta

6

Solitamente si utilizzano solo file di piccole dimensioni se si sta creando un intero gruppo di database, se si sta operando solo da alcuni database non si risparmia abbastanza da fare confusione.

Non abbiamo riscontrato alcun problema di prestazioni con i clienti che hanno molti, molti DBS (e in realtà beneficiano di file di piccole dimensioni). Il loro livello di attività è normalmente piuttosto basso rispetto ad altre installazioni, però. Sulla base di quello che sta facendo Mongo, potrebbe essere leggermente più lento fare alcune operazioni ma non credo che te ne accorgerai mai.

+2

Un'altra nota qui è che --smallfiles è buono per gli arbitri - un arbitro spesso prealloca molti file (giornale per esempio) all'avvio, perché all'avvio non lo fa ma so che è un arbitro. –

+2

@AdamC Un buon punto, ma puoi anche girare di journaling (nojournal = true) per un arbitro. – Mattias

1

Inoltre, se in esecuzione nel cloud AWS e utilizzando le istanze m3.small con SSD, l'archiviazione è limitata a 4 GB. L'impostazione di questa opzione ti permetterà di avere un piccolo nodo mongodb supportato da SSD. Potrebbe essere sufficiente per piccole attività

+0

Ho avuto un problema con poco spazio sul mio blog/forum e ho ottenuto 3 GB gratuiti su 20 GB, quindi i file di piccole dimensioni sembrano essere una buona idea, pensa di usare i file piccoli su piccoli blog/forum e poi passare a file non piccoli su file più grandi siti come si cresce – wiak