MongoDB总存储大小

时间:2012-09-03 16:36:00

标签: mongodb

我有一个分片和复制的MongoDB,有数十万条记录。我知道Mongo用一些填充因子写数据,以允许快速更新,我也知道要复制数据库Mongo应该存储操作日志,这需要一些(实际上,很多)空间。即使有这些知识,我也不知道如何根据典型数据库记录的大小来估计Mongo所需的实际大小。到目前为止,每周维修之间的差异为2 - 3。

所以问题是:在给定平均记录大小(以字节为单位)的情况下,如何估算MongoDB所需的总存储大小?

1 个答案:

答案 0 :(得分:4)

简短的回答是:你不能,不仅仅基于平均。文件大小(至少不是以任何准确的方式)。

更详细地解释:

磁盘上所需的空间不仅仅是平均文档大小的函数。您创建的任何索引都需要空间。如果你确实触发了这些移动,那么就需要空间(尽管有填充,但确实会发生这种情况) - 该空间被放置在要重复使用的列表上但是根据您随后插入的数据,可能会也可能不会重用那个空间。

您还可以补充一点,预分配意味着在分配新数据文件时,偶尔会有少量文档将磁盘空间利用率提高约2GB。当然,如果有足够的数据,这将基本上是一个舍入错误,但值得记住。

假设一致的使用模式,估计这种类型的数据大小比率的唯一方法是随着时间推移特定用例的趋势,并跟踪磁盘空间使用情况与插入的数据(文档数量可能更好)数据量取决于文档大小的可变性。)

同样,如果您跟踪插入速率,文档大小以及从重新同步/修复中获得的空间。仅供参考 - 您可以从头开始重新同步辅助数据,以获得数据文件的“新鲜”副本,而不是运行维修,这可以减少破坏性,并根据您的设置使用更少的空间。