【问题标题】:Why dis-similarities in MongoDB Database Used Space Architecture?为什么 MongoDB 数据库已用空间架构存在差异?
【发布时间】:2012-01-27 05:48:34
【问题描述】:

我们几天前开始使用 MongoDB,但我们无法理解为什么 MongoDB 使用的总磁盘空间和 MongoDB 使用的数据库大小有如此不相似之处。我的担忧如下:

当我们执行查询时 db.stats();我们看到的细节如下:

  • 数据大小:232.68MB
  • 存储大小:292.58MB
  • 索引大小:204.51MB
  • avgObjSize:171MB

如果我们检查数据库位置,总文件大小(test.0+test.1+test.2..etc)为“2.8GB”。 如果添加 [datasize+storagesize+indexsize+avgobjsize = 900.77MB] 为什么它不等于磁盘“2.8GB”使用的物理空间。除了 datasize、storagesize、indexsize、avgobjsize 之外,还有哪些空间是为 MongoDB 分配的。能否请您提供准确的建议。

非常感谢,

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    数据大小是实际文档使用的空间量。

    存储大小是为文档内部分配的空间量。 MongoDB 自动将填充添加到实际文档大小,以使更新不需要在磁盘上移动。因此,存储大小通常大于数据大小。将其视为实际文件系统之上的虚拟文件系统。

    FileSize 是主机操作系统文件系统中磁盘上分配的空间量。这是以 2GB 为增量完成的,通常大于存储大小。

    对集合运行 compact 或 repair 可以通过删除填充来缩小存储大小。这在文档在磁盘上增长然后删除了一些数据的情况下最有用。它仍然占据存储大小的最大大小,因此,如果您在增长和收缩时有大量流失,这可以帮助回收空间。

    除非您将文件大小移动到另一个系统,否则文件大小永远不会缩小,因为磁盘上的空间已分配给 MongoDB 使用。但是,缩小存储大小可以减少对另一个 FileSize 分配的需求,从而有效地重用之前分配的空间。

    【讨论】:

      【解决方案2】:

      MongoDB 分配一些空间供将来使用。在任何给定时刻,这个额外空间都不应超过 4 GB。

      【讨论】:

      • 嗨@Sergei Tulentsev,感谢您提供的信息。我们的一位技术人员说,存储大小是由数据大小加上为收集分配的可用空间表示的。根据他的解释,分配的可用空间包含在存储大小中,那么为什么我们在数据库存储位置中有更多大小。我的意思是 test.o,test.1...等的大小。请为此案提供补救措施。再次感谢。
      • 这个小额外空间有问题吗?因为你无法真正修复它。
      • 据我所知,存储空间包括实际存储的东西(数据和索引)。此值不计入额外空间。
      • 嗨@Sergei Tulentsev,感谢您的信息。你能解释一下fileSize和fileSize和StorageSize之间的区别吗..
      猜你喜欢
      • 2010-11-17
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 2017-11-30
      • 2017-02-19
      • 2016-06-30
      • 2021-04-07
      相关资源
      最近更新 更多