2012-03-23 90 views
2

如何为MongoDB数据库大小计算0.203125GB?0.203125GB MongoDB数据库的计算逻辑?

所有操作系统(32位和64位)都一样吗?

我们可以看到特定数据库的当前使用情况吗?

> show dbs 
local (empty) 
tutorial  0.203125GB 

回答

2

MongoDB Documentation

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

此外,在Unix上,mongod会在后台预分配一个额外的数据文件,并对该文件进行后台初始化。这些文件预填充零字节。对于较大的数据文件,此初始化过程可能需要一分钟(在快速磁盘子系统上较少)。在后台分配新数据库文件时,在后台预填充可防止出现重大延迟。

在Windows上,其他数据文件未预先分配。 NTFS可以相对较快地分配填充零的大文件,从而不需要预先分配。

只要数据文件开始使用,下一个将被预分配。

您可以使用--noprealloc命令行参数禁用预分配。这个标志对于在每次测试之后放置数据库的小数据集进行测试都很不错。它不应该在生产服务器上使用。

对于大型数据库(数百GB或更多),这是没有意义的结果,因为未分配空间相对较小。