Компактная команда не освобождает место в MongoDB 2.0 - PullRequest
5 голосов
/ 27 сентября 2011

Я только что установил MongoDB 2.0 и попытался запустить команду сжатия вместо команды восстановления в более ранних версиях. Моя база данных на данный момент пуста, то есть существует только одна коллекция с 0 записями и двумя системными коллекциями (индексы, пользователи). В настоящее время на жестком диске БД занимает около 4 ГБ. БД используется как временная очередь со всеми удаляемыми элементами после их обработки.

Я попытался запустить следующее в оболочке Монго.

use mydb
db.theOnlyCollection.runCommand("compact")

Возвращается с

ok: 1

Но на жестком диске все равно остается место. Я также пытался сжать системные коллекции, но это не сработало.

Когда я запускаю нормальную команду восстановления

db.repairDatabase()

база данных сжата и занимает всего 400 МБ.

У кого-нибудь есть идея, почему компактная команда не работает?

Большое спасибо за вашу помощь.

Best

Alex

1 Ответ

4 голосов
/ 27 сентября 2011

Сжатие коллекции не должно уменьшать размер файлов данных. Главное - дефрагментировать данные сбора и индексации - объединять неиспользуемые пробелы в непрерывное пространство, позволяя хранить новые данные. Более того, он может увеличить размер файлов данных:

Сжатие может увеличить общий размер ваших файлов данных до 2 ГБ. Даже в этом случае общее пространство для хранения коллекции уменьшится.

http://www.mongodb.org/display/DOCS/compact+Command#compactCommand-Effectsofacompaction

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