J'ai une base de données GridFS MongoDB
dont j'ai besoin pour gérer la taille de. Il fonctionne très bien depuis sa création, mais je n'ai jamais vraiment regardé sa taille de disque jusqu'à maintenant.Comment puis-je gérer la taille de disque d'une base de données GridFS MongoDB?
A en juger par cette outout de la commande db.stats()
> db.stats()
{
"db" : "documents",
"collections" : 4,
"objects" : 10967,
"avgObjSize" : 52491.573994711405,
"dataSize" : 575675092,
"storageSize" : 595255296,
"numExtents" : 24,
"indexes" : 4,
"indexSize" : 686784,
"fileSize" : 2080374784,
"nsSizeMB" : 16,
"ok" : 1
}
il semble que la base de données elle-même est à peu près 600Mo. Cette taille a du sens pour moi car elle est la même taille que les sauvegardes de base de données que je reçois de mongodump
. La taille du fichier est beaucoup plus grand que, et il y a pire quand je regarde dans le répertoire de données lui-même dans /var/lib/mongodb
:
[email protected]:/var/lib/mongodb# ls -la
total 2474036
drwxr-xr-x 5 mongodb mongodb 4096 Apr 15 09:28 .
drwxr-xr-x 62 root root 4096 Mar 4 07:48 ..
drwxr-xr-x 2 mongodb mongodb 4096 Apr 13 11:48 documents
-rw------- 1 mongodb mongodb 67108864 Apr 15 09:16 documents.0
-rw------- 1 mongodb mongodb 134217728 Apr 13 11:48 documents.1
-rw------- 1 mongodb mongodb 268435456 Apr 13 11:48 documents.2
-rw------- 1 mongodb mongodb 536870912 Apr 15 09:16 documents.3
-rw------- 1 mongodb mongodb 1073741824 Apr 13 11:50 documents.4
-rw------- 1 mongodb mongodb 16777216 Apr 15 09:16 documents.ns
drwxr-xr-x 2 mongodb mongodb 4096 Apr 13 11:50 journal
-rwxr-xr-x 1 mongodb mongodb 5 Apr 13 11:46 mongod.lock
drwxr-xr-x 2 mongodb mongodb 4096 Apr 15 09:28 _tmp
-rw------- 1 mongodb mongodb 67108864 Apr 15 09:28 -v.0
-rw------- 1 mongodb mongodb 67108864 Apr 15 09:28 v.0
-rw------- 1 mongodb mongodb 134217728 Apr 15 09:28 -v.1
-rw------- 1 mongodb mongodb 134217728 Apr 15 09:28 v.1
-rw------- 1 mongodb mongodb 16777216 Apr 15 09:28 -v.ns
-rw------- 1 mongodb mongodb 16777216 Apr 15 09:28 v.ns
Et ceci /var/lib/mongodb/journal
:
[email protected]:/var/lib/mongodb/journal# ls -la
total 3145752
drwxr-xr-x 2 mongodb mongodb 4096 Apr 13 11:50 .
drwxr-xr-x 5 mongodb mongodb 4096 Apr 15 09:28 ..
-rw------- 1 mongodb mongodb 1073741824 Apr 15 09:28 j._2
-rw------- 1 mongodb mongodb 88 Apr 15 09:28 lsn
-rw------- 1 mongodb mongodb 1073741824 May 5 2012 prealloc.1
-rw------- 1 mongodb mongodb 1073741824 May 5 2012 prealloc.2
Maintenant, corrigez-moi si je me trompe , mais je regarde essentiellement à la taille de disque de 5,5 Go pour une base de données de 600 Mo. C'est plutôt inefficace.
Comment puis-je réduire la taille du disque? Y a-t-il une commande similaire à OPTIMIZE TABLE
dans MySQL
?
Je ne sais pas si GridFS
est une bête différente d'une base de données régulière, mais j'ai essayé d'exécuter compact mais cela n'a rien changé à la taille du disque.
Et les fichiers journaux? Puis-je réduire la taille du disque de tous les fichiers journaux?
cela n'a rien à voir avec GridFS. Le journal est là pour fournir une durabilité, et MongoDB préalloue toujours les fichiers avant qu'ils en aient besoin. Quand tu mongodump tu n'obtiens pas les fichiers pré-alloués ni le journal. Si vous voulez avoir une plus petite DB, regardez les options --smallfiles et --noprealloc à mongod. Je ne recommande pas de courir sans journalisation jamais. –
Asya: à la fois '--smallfiles' et' --noprealloc' sont pour le journalisation à droite? Je vais essayer le premier et pas le dernier car je veux toujours la journalisation. Que diriez-vous des fichiers de base de données eux-mêmes Si je suis moins loin la journalisation je regarde encore> 2 Go pour une base de données de 600 Mo ... – c00kiemonster
ni - ils sont pour les fichiers de données. c'est seulement si les fichiers sont alloués au besoin ou à l'avance et s'ils sont toujours plus gros. ne pas désactiver la journalisation la seule façon de le faire est --nojournal. –