логика расчета 0.203125GB базы данных MongoDB? - PullRequest
2 голосов
/ 23 марта 2012

Как 0,20125 ГБ рассчитывается для размера базы данных MongoDB?

Это одинаково для всех ОС (32-битной и 64-битной)?

Можем ли мы увидеть текущее использование конкретной базы данных?

> show dbs
local   (empty)
tutorial        0.203125GB

1 Ответ

2 голосов
/ 23 марта 2012

Документация MongoDB

Каждый файл данных предварительно выделяется для определенного размера. (Это сделано для предотвращения фрагментации файловой системы, среди других причин.) Первое имя файла для базы данных: .0, затем .1 и т. Д. 0 будет 64 МБ, .1 128 МБ и т. Д., До 2 ГБ. Как только размер файла достигает 2 ГБ, каждый последующий файл также имеет размер 2 ГБ.

Таким образом, если последний существующий файл данных, скажем, 1 ГБ, этот файл может быть пустым на 90%, если он был создан недавно.

Кроме того, в Unix mongod предварительно выделит дополнительный файл данных в фоновом режиме и выполнит фоновую инициализацию этого файла. Эти файлы заполнены нулевыми байтами. Эта инициализация может занять до минуты (меньше в подсистеме быстрого диска) для больших файлов данных. Предварительное заполнение в фоновом режиме предотвращает значительные задержки при следующем выделении нового файла базы данных.

В Windows дополнительные файлы данных не выделяются заранее. NTFS может распределять большие файлы, заполненные нулями, относительно быстро, что делает предварительное распределение ненужным.

Как только файл данных начнет использоваться, следующий файл будет предварительно выделен.

Вы можете отключить предварительное выделение с помощью параметра командной строки --noprealloc. Этот флаг удобен для тестов с небольшими наборами данных, где вы отбрасываете базу данных после каждого теста. Его не следует использовать на производственных серверах.

Для больших баз данных (сотни ГБ и более) это не имеет существенных последствий, поскольку нераспределенное пространство относительно мало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...