2016-04-30 3 views
1

MongoDB preallocates пространства для роста документа. Это может быть отключено опцией noPadding, но это применимо только к двигателю MMAPv1.Что такое эквивалент NoPadding для WiredTiger?

Есть ли аналогичный вариант для двигателя WiredTiger? У меня есть определенные коллекции, которые растут только с вставками, поэтому размеры документа всегда будут одинаковыми.

Я хочу сохранить свою коллекцию как можно меньше. Поэтому, если есть какая-либо особенность MongoDB, которая обеспечивает экономию пространства (например, noPadding) для WiredTiger, я хотел бы знать.

ответ

2

WiredTiger не имеет прокладки, так как есть no in-place updates (see slide 25). Вместо этого весь обновленный документ записывается в новое место, которое называется copy-on-write.

Конечно, это приводит к тому, что файлы данных будут больше, чем они должны быть. Однако, если вы используете сжатие (которое включено по умолчанию), эти накладные расходы должны быть довольно небольшими.

Если вы действительно хотите, чтобы убедиться, что вы не «впустую» любое пространство, вы можете использовать compact command:

use yourDb 
db.runCommand({compact:"yourColl"}) 

Этот releases unused disk space to the system, но имеет недостаток blocking the database во время операции.

+0

Спасибо за ваш ответ. Я могу получить реальный размер файла с помощью сжатия Zlib. Это расстраивает. Кроме того, индексы берут два раза, независимо от того, что. Compact помогает, но недостаточно. Кроме того, поскольку вы упомянули об этом, когда я удалил все в коллекции и применил compact и dropIndexes, все еще используется пространство для ничего. У вас есть предложение? – stackyname

+0

@stackyname Индексные файлы разные. И если вы хотите удалить коллекцию, просто удалите ее. Затем файлы данных удаляются. Однако я не уверен, чего именно вы пытаетесь достичь. Может быть, вы должны быть более ясными и соответствующим образом изменить свой вопрос. –

+0

Извините за путаницу. Я отредактировал мой главный вопрос. Однако мой вопрос в комментарии отличается от основного вопроса. Я не хочу удалять свою коллекцию, но когда я удаляю некоторую информацию, я хотел бы вернуть свое дисковое пространство. – stackyname

Смежные вопросы