[英]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.