Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB总存储大小_Mongodb - Fatal编程技术网

MongoDB总存储大小

MongoDB总存储大小,mongodb,Mongodb,我有一个分片复制的MongoDB,有上千万条记录。我知道Mongo使用一些填充因子写入数据,以允许快速更新,我还知道要复制数据库Mongo应该存储操作日志,这需要一些(实际上,很多)空间。即使有了这些知识,我也不知道如果给定一个典型数据库记录的大小,如何估计Mongo所需的实际大小。到目前为止,我有一个下降的系数为2-3之间的每周维修 因此,问题是:如果以字节为单位的平均记录大小,如何估计MongoDB所需的总存储大小?简单的回答是:不能,不能仅基于平均文档大小(至少不能以任何准确的方式) 要更

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


因此,问题是:如果以字节为单位的平均记录大小,如何估计MongoDB所需的总存储大小?

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

要更详细地解释:

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

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

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

类似地,如果跟踪插入率、文档大小以及从重新同步/修复中获得的空间。仅供参考-您可以从头开始重新同步辅助系统,以获取数据文件的“新”副本,而无需运行修复,这会减少中断,并根据您的设置使用更少的空间