Почему пустая база данных MongoDB такая большая?
когда я создаю новый экземпляр базы данных mongoDB с командой
mongod --dbpath db
здесь db
- Это папка, которую я сделал в каталоге, из которого я вызываю команду. После выполнения и проверки размера каталога, я вижу, что это закончится 300 МБ по размеру-когда там нет данных.
что здесь происходит?
Спасибо за любую помощь!
редактировать
спасибо людям говоря о предварительно выделенном размере для 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 .
как вы можете видеть, каталог журнала занимает почти все пространство.
2 ответов
в зависимости от вашей версии MongoDB и настроенного механизма хранения несколько файлов данных и метаданных будут предварительно распределены при запуске. Это ожидаемое поведение:" пустое " развертывание по-прежнему приводит к уборке и диагностическим данным.
на основе списка каталогов вы используете MongoDB 3.2, который по умолчанию использует механизм хранения WiredTiger. WiredTiger выделяет до 100 Мб на файл журнала, поэтому ваше новое развертывание имеет ~300 мб предварительно выделенного журнал файлы:
100M ./journal/WiredTigerLog.0000000003
100M ./journal/WiredTigerPreplog.0000000001
100M ./journal/WiredTigerPreplog.0000000002
помимо файлов журнала, другие метаданные, которые будут созданы в вашем dbpath
(без явного создания баз данных) будет включать в себя:
-
A
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
при создании новой базы данных MongoDB создает пространство для oplog.
oplog (журнал операций) - это специальная закрытая коллекция, которая хранит скользящую запись всех операций, которые изменяют данные, хранящиеся в ваших базах данных.