0

サイズを管理する必要があるGridFS MongoDBデータベースがあります。作成以来、非常にうまく動作していますが、今までディスク サイズを実際に調べたことはありませんでした。

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
}

データベース自体は約600MBのようです。このサイズは、私が取得したデータベースのバックアップと同じサイズであるため、私には理にかなっていますmongodump。ただし、ファイル サイズははるかに大きく、次のデータ ディレクトリ自体を見るとさらに悪化します/var/lib/mongodb

root@deathstar:/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

そしてこれで/var/lib/mongodb/journal

root@deathstar:/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

間違っていたら訂正してください。基本的には、600MB のデータベースに対して 5.5GB のディスク サイズを検討しています。それはかなり非効率的です。

ディスクサイズを減らすにはどうすればよいですか? OPTIMIZE TABLEin に似たコマンドはありMySQLますか?

GridFS通常のデータベースとは違う獣なのかわかりませんが、 compactを実行してみましたが、ディスク サイズには何も影響しませんでした。

ジャーナルファイルはどうですか?どうにかしてすべてのジャーナル ファイルのディスク サイズを減らすことはできますか?

4

1 に答える 1

1

大きなファイルに関する問題は、GridFS に固有のものではありません。

ジャーナルは耐久性を提供するために存在し、MongoDB は必要になる前に常にファイルを事前に割り当てます。ここでは何も変更しないことをお勧めします。つまり、サーバーが予期せずクラッシュした場合に備えて、ジャーナリングを使用してファイルを保護し続けます。

事前に割り当てられたデータ ファイルやジャーナル ファイルを取得しないため、mongodump を使用するとはるかに小さいファイルが表示されます。

DB ディレクトリを小さくしたい場合は、mongod のオプションを確認することをお勧め--smallfilesします。--nopreallocどちらも、スペースが割り当てられるときと一度に割り当てられる量に影響します。

于 2013-04-23T05:31:31.257 に答える