MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Tailles de fichier MongoDB GridFS énormes pour un fichier relativement petit

D'accord; après de nombreuses recherches, il semble que MongoDB pré-alloue de l'espace dans les fichiers de taille exponentielle jusqu'à 2 Go, après quoi chaque fichier sera de 2 Go.

http://www.mongodb.org/display/DOCS/Excessive+Disk +Espace

Mon programme de test ajoute les fichiers de 80 Mo, dans les fichiers d'arrière-plan (.0 - .7, etc.) et lorsque les blocs de données commencent à être écrits dans le dernier fichier, Mongo préalloue un autre fichier exponentiellement plus grand que le dernier.

Ainsi, le premier fichier de 80 Mo remplit le fichier de 16 Mo, le fichier de 32 Mo et les fichiers d'arrière-plan de 64 Mo et, en raison des métadonnées, prend un peu plus d'espace et doit empiéter légèrement sur le fichier de 128 Mo, cela déclenche mongo pour préallouer un fichier de 256 Mo totalisant 496 Mo ; au fur et à mesure que de plus en plus de fichiers sont ajoutés, plus de fichiers sont préalloués et lorsque 2 Go sont atteints sur ma machine de test, Mongo ne peut pas accéder à l'espace et s'effondre.

Ainsi, même s'il semble qu'un fichier de 80 Mo occupe beaucoup plus d'espace qu'il ne le devrait, cela a du sens d'une manière détournée.

Cela peut être désactivé en exécutant mongod avec --noprealloc bien que cela ne soit recommandé que pour les machines de test.

Merci pour vos réponses !