使用命令
创建新的mongoDB数据库实例时mvn clean install
其中mongod --dbpath db
是我在调用命令的目录中创建的文件夹。运行此目录并检查目录的大小后,我看到它的大小超过 300MB - 当时没有数据。
这里发生了什么?
感谢您的帮助!
修改
感谢大家谈论db
的预先分配大小。
以下是数据库目录中的文件/文件夹列表,按顺序排序(现在数据库中有一点数据,但这里的大小可以忽略不计):
journal
正如您所看到的,日志目录占据了几乎所有空间。
答案 0 :(得分:9)
根据您的MongoDB版本和配置的存储引擎,将在启动时预先分配多个数据和元数据文件。这是预期的行为:"空"部署仍然会导致内务和诊断数据。
根据您的目录列表,您运行的MongoDB 3.2默认使用WiredTiger存储引擎。 WiredTiger每个日志文件最多分配100MB,因此您的新部署有大约300MB的预分配journal files:
100M ./journal/WiredTigerLog.0000000003
100M ./journal/WiredTigerPreplog.0000000001
100M ./journal/WiredTigerPreplog.0000000002
除日记文件外,将在dbpath
中创建的其他元数据(尚未明确创建数据库)将包括:
一个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
diagnostic.data
目录;这是针对服务器状态指标的定期抽样:
168K ./diagnostic.data/metrics.2016-06-10T11-17-58Z-00000
72K ./diagnostic.data/metrics.2016-06-10T10-19-31Z-00000
答案 1 :(得分:1)
当您创建新数据库时,MongoDB会为oplog创建空间。
oplog(操作日志)是一个特殊的上限集合,它保存了修改存储在数据库中的数据的所有操作的滚动记录。