簡體   English   中英

如何管理GridFS MongoDB數據庫的磁盤大小?

[英]How can I manage the disk size of a GridFS MongoDB database?

我有一個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磁盤大小。 那是非常低效的。

如何減小磁盤大小? MySQL是否有與OPTIMIZE TABLE類似的命令?

我不知道GridFS是否與常規數據庫不同,但我嘗試運行緊湊型但對磁盤大小沒有任何作用。

日志文件又如何呢? 我可以以某種方式減小所有日志文件的磁盤大小嗎?

大文件的問題並非特定於GridFS。

日志提供持久性,而MongoDB總是在需要文件之前預先分配文件。 我建議不要在此處進行任何更改-即在服務器意外崩潰的情況下繼續使用日記功能來保護文件。

使用mongodump會看到更小的文件,因為您沒有獲得預分配的數據文件或日記文件。

如果要使用較小的數據庫目錄,建議您查看mongod的--smallfiles--noprealloc選項。 分配空間和一次分配多少都影響一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM