【问题标题】:Why is my disk size reduced and not using the free space of storageSize? ongodb为什么我的磁盘大小减小了,而没有使用 storageSize 的可用空间? ongodb
【发布时间】:2021-03-20 20:54:47
【问题描述】:
{
"db" : "nameDatabase",
"collections" : 2,
"views" : 0,
"objects" : 2104394,
"avgObjSize" : 459217.714875161,
"dataSize" : 966375003877.0,
"storageSize" : 466821181440.0,
"numExtents" : 0,
"indexes" : 2,
"indexSize" : 36229120.0,
"ok" : 1.0

}

dataSize = 数据库中信息的实际大小

storageSize = dataSize + 已删除的文档(可用空间)

storageSize - dataSize = 499553822437.0 *可用空间重写新文档。对吗?

虽然 db.stats() 表示这些值,但如果我查阅我的硬盘,collectionXXX.wt 文件占用 394GB 并继续增长...我只有 11GB 可用空间(关键)。

怎么可能?有什么解决办法吗?

我使用了compact,但它没有释放硬盘空间。

(MongoDB版本3.4.7版)

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    dataSize 是原始数据的大小。例如文档{a: false} 的大小为 9 字节

    storageSize 是数据的物理已用磁盘空间大小(不含索引)。如您所见,您的数据是 compressed 大约 50%

    indexSize 是索引的物理已用磁盘空间大小。

    因此,您所有的 collectionXXX.wt + indexXXX.wt 文件的大小应该在 434.8 GiByte 左右

    解决方案:放入更大的磁盘或删除未使用的数据。

    【讨论】:

    • 谢谢!现在我正在应用以下“补丁”:我选择 10,000 个早于 X 日期(过时)的文档并将它们从 Robo 3T 中删除,但这需要 30 多分钟......我使用“限制”而不是直接执行“选定日期之前的所有内容”,以免数据库饱和或损坏。数据库处于生产/活动状态。您是否认为正在使用中(每分钟都有新记录),我可以删除多年前的所有文档而不影响(停止使用或损坏数据库)吗?我没有太多想法,我担心会造成灾难。
    • 您可以简单地删除旧数据,但这需要一些时间。未来看看Expire Data from Collections by Setting TTL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2015-10-09
    • 2019-11-27
    • 2016-09-06
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    相关资源
    最近更新 更多