几天前我开始使用MongoDB,我在理解某些数据库架构时遇到了问题。如果我执行查询db.stats();我有文件大小,datasize,storagesize& indexsize。我在冲浪时发现了以下内容:
Storagesize = datasize +为集合分配的可用空间
datasize = MongoDB使用的数据库大小
在这里,我无法理解文件大小的代表性。 datasize reprsentation。对于datasize - > indexsize还包括在内?请为指定的属性提供精确的解决方案,如果我提到任何错误,请纠正我。
提前谢谢,
答案 0 :(得分:17)
答案 1 :(得分:2)
如this post中所述,您应监控的不同MongoDB性能指标(使用MMAPv1),以下是您应跟踪的dbStats返回的所有存储大小指标:
dataSize
测量数据库中所有文档和填充所占用的空间。由于填充,dataSize
会在文档被删除时减少,但在更新后不会缩小或变大 - 这些操作只是添加或借用文档的填充。indexSize
返回在数据库上创建的所有索引的大小。storageSize
测量数据库中所有数据范围的大小。 使用MMAPv1 时,它始终大于或等于dataSize
,因为范围包含尚未使用的空闲空间或已删除和移动的文档释放的空闲空间。文档缩小或移动时storageSize
不受影响。fileSize
对应于数据文件的大小。它显然总是大于storageSize
,可以看作是磁盘上数据库的存储空间。只有在删除数据库时才会减少,并且在删除集合,文档或索引时不会受到影响。这是一张包含dbStats返回的不同重要存储指标的图表: 注意:使用MMAPv1存储引擎,MongoDB会在磁盘上为文档预先分配额外空间,因此可以进行高效的就地更新,因为文档有增长空间而无需重新定位。这个额外的空间称为 padding 。
答案 2 :(得分:1)
我意识到这是一个较旧的问题,但我想我会链接到db.stats()
的官方文档,以寻找其他寻找类似信息的人(就像我一样)。