在创建数据库时,MongoDB会在磁盘上分配一组数据文件,所有集合、索引和数据库的其他元数据都保存在这些文件里。数据文件都被放置在启动mongod时指定的dbpath里。在未指定dbpath时,mongod会把文件全保存在/data/db里。
garden.ns是第一个生成的文件。文件扩展名ns表示namespaces,意即命名空间。数据库中的每个集合和索引都有自己的命名空间,每个命名空间的元数据都存放在这个文件里。默认情况下,.ns文件大小固定在16 MB,大约可以存储24 000个命名空间。也就是说数据库中的索引和集合总数不能超过24 000。我们几乎不可能使用这么多集合与索引,但如果真有需要,可以使用–nssize服务器选项让该文件变得更大一点。
MongoDB倾向于这种预分配的做法,这能让数据尽可能连续存储。如此一来,在查询和更新数据时,这些操作能更靠近一点,而不是分散在磁盘各处。
在向数据库添加数据时,MongoDB会继续分配更多的数据文件。每个新数据文件的大小都是上一个已分配文件的两倍,直到达到预分配文件大小的上限——2 GB,即garden.2会是256 MB,garden.3是512 MB,以此类推。此处基于这样一个假设,如果总数据大小呈恒定速率增长,应该逐渐增加数据文件分配的空间,这是一种相当标准的分配策略。当然,这么做的后果之一就是分配的空间与实际使用的空间之间会存在很大的差距。
mongo空间预分配
原文作者:codecraft
原文地址: https://segmentfault.com/a/1190000007837674
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://segmentfault.com/a/1190000007837674
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。