为什么空的 MongoDB 数据库这么大?

2024-01-18

当我使用命令创建新的 mongoDB 数据库实例时

mongod --dbpath db

where db是我在调用命令的目录中创建的文件夹。运行此命令并检查目录的大小后,我发现一切都结束了300MB大小 - 当其中没有数据时。

这里发生了什么?

谢谢你的帮助!


EDIT

感谢人们谈论预分配的大小journal.

这是数据库目录中的文件/文件夹列表,按顺序排序(现在数据库中有一点数据,但其大小可以忽略不计):

$du -ha | sort -n
4.0K    ./WiredTiger
4.0K    ./WiredTiger.lock
4.0K    ./WiredTiger.turtle
4.0K    ./WiredTigerLAS.wt
4.0K    ./mongod.lock
4.0K    ./storage.bson
8.0K    ./.DS_Store
8.0K    ./diagnostic.data/metrics.2016-06-10T11-07-50Z-00000
8.0K    ./diagnostic.data/metrics.interim
 16K    ./_mdb_catalog.wt
 16K    ./index-3-3697658674625742251.wt
 36K    ./collection-0-3697658674625742251.wt
 36K    ./index-1-3697658674625742251.wt
 36K    ./sizeStorer.wt
 44K    ./WiredTiger.wt
 60K    ./collection-2-3697658674625742251.wt
 72K    ./diagnostic.data/metrics.2016-06-10T10-19-31Z-00000
100M    ./journal/WiredTigerLog.0000000003
100M    ./journal/WiredTigerPreplog.0000000001
100M    ./journal/WiredTigerPreplog.0000000002
168K    ./diagnostic.data/metrics.2016-06-10T11-17-58Z-00000
256K    ./diagnostic.data
300M    ./journal
301M    .

正如您所看到的,日志目录几乎占据了所有空间。


根据您的 MongoDB 版本和配置的存储引擎,启动时将预先分配多个数据和元数据文件。这是预期的行为:“空”部署仍然会产生内务管理和诊断数据。

根据您的目录列表,您正在运行 MongoDB 3.2,默认使用 WiredTiger 存储引擎。 WiredTiger 为每个日志文件分配最多 100MB,因此您的新部署有约 300MB 的预分配空间日志文件 https://docs.mongodb.com/manual/core/journaling/:

     100M    ./journal/WiredTigerLog.0000000003
     100M    ./journal/WiredTigerPreplog.0000000001
     100M    ./journal/WiredTigerPreplog.0000000002

除了日志文件之外,还将在您的文件中创建其他元数据dbpath(尚未显式创建数据库)将包括:

  • A local具有名为上限集合的数据库startup_log https://docs.mongodb.com/manual/reference/local-database/#local.startup_log有关此实例的每次启动调用的一些诊断信息mongod。将有一个关联的集合和索引文件local.startup_log;文件名是不透明的,但作为创建的第一个文件,我猜测在您的示例中这些文件可能是:

     36K    ./collection-0-3697658674625742251.wt
     36K    ./index-1-3697658674625742251.wt
    
  • 多个 WiredTiger 元数据文件。自部署以来,部署中始终至少有一个数据库local默认情况下会创建数据库startup_log:

    4.0K    ./WiredTiger
    4.0K    ./WiredTiger.lock
    4.0K    ./WiredTiger.turtle
    4.0K    ./WiredTigerLAS.wt
     16K    ./_mdb_catalog.wt
     36K    ./sizeStorer.wt
     44K    ./WiredTiger.wt
    
  • A diagnostic.data目录;这是用于服务器状态指标的定期采样:

    168K    ./diagnostic.data/metrics.2016-06-10T11-17-58Z-00000
    72K    ./diagnostic.data/metrics.2016-06-10T10-19-31Z-00000
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么空的 MongoDB 数据库这么大? 的相关文章

随机推荐