2012-07-23 118 views
5

我想为我的新项目使用mongodb。问题是,mongo使用预分配文件:mongo db --smallfiles开关缺陷

每个数据文件被预分配到一个特定的大小。 (这是为了防止文件系统碎片等原因。)数据库的第一个文件名为.0,那么.1等.0将为64MB,.1 128MB等,最高可达2GB。一旦文件达到2GB的大小,每个连续的文件也是2GB。因此,如果最后一个数据文件是1GB,那么如果该文件最近被创建,则该文件可能是90%空的。

从这里:http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

而其正常有没有在它的许多2GB的文件。有一个--smallfiles开关,以限制该文件为512MB

--smallfiles =>使用较小的初始文件大小(16MB)和最大大小(512MB)

我想知道使用小文件有利于生产?它有什么缺点。

有noprealloc开关,但它的生产不好。但没有关于小文件的说明。

回答

6

如果你正在创建一大堆数据库,那么你通常只会使用小文件,如果你只是在几个数据库中运行,它并不足以解决问题。

对于拥有许多DBS(实际上从小文件中受益)的客户,我们还没有看到它的任何性能问题。不过,他们的活动水平通常比其他安装低。根据Mongo在做什么,做一些操作可能会稍微慢一些,但我不认为你会注意到。

+2

另一个需要注意的地方是--smallfiles对仲裁者来说很好 - 仲裁者启动时通常会预先分配大量文件(例如日志),因为在启动时它不会但是知道它是一个仲裁者。 – 2012-07-24 00:34:04

+2

@AdamC好点,但你也可以为仲裁者开启日志记录(nojournal = true)。 – Mattias 2012-08-20 17:34:06

1

此外,如果在AWS云中运行并将m3.small实例与SSD一起使用,则您的存储空间将被限制为4GB。设置此选项将允许您拥有一个由SSD支持的小型mongodb节点。可以足够小任务

+0

我的博客/论坛上的空间有限,我从20GB中获得了3GB空间,因此小文件似乎是个好主意,可以考虑在小博客/论坛上使用小文件,然后切换到更大的非小文件网站随着你的成长 – wiak 2015-11-17 06:05:04