B.3 数据文件
在MongoDB数据目录(默认下是/data/db/)中,每个数据库都对应若干文件。每个数据库都拥有一个单独的扩展名为.ns的文件和几个数据文件,这些数据文件以单调增长的数字为扩展名。于是,名为foo的数据库会被存储在foo.ns、foo.0、foo.1、foo.2等文件中。
每个数据文件的大小是前一个文件大小的二倍,直到达到最大值2 GB。这一特性使得较小的数据库不会浪费过多的磁盘空间,而较大的数据库可使用连续的磁盘空间。
MongoDB也会预分配数据文件,以保证性能稳定(使用--noprealloc
选项可关闭这一特性)。预分配在后台运行。数据文件一旦被填满,就会开始进行预分配。这意味着MongoDB服务器总会为每个数据库维护一个额外的空白数据文件,以避免文件分配失败。