Как эффективно «дефрагментировать» индекс MongoDB в производстве? - PullRequest
4 голосов
/ 01 мая 2010

Я смотрю на MongoDB. Чувствует себя хорошо.

Я добавил несколько индексов в коллекцию, загрузил кучу данных, затем удалил все данные, и заметил, что индексы не изменили размер, аналогично описанному поведению здесь .

Если я позвоню

db.repairDatabase()

Затем индексы сдавливаются почти до нуля. Точно так же, если я не удаляю все данные, но вызываю repairDatabase (), индексы несколько сжимаются (возможно, потому что неиспользуемые расширения усекаются?). Я получаю размер индекса из "totalIndexSize" db.collection.stats ().

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

Поскольку я хочу запустить как можно меньше экземпляров mongod, я хочу больше узнать о том, как управляются индексы после удалений. Кто-нибудь может указать мне на что-нибудь или дать какой-нибудь совет?

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Подведем итог связанного вопроса Дэвида :

  • Нет пути, кроме db.repairDatabase ().
  • Если вам необходимо минимизировать время простоя, настроить конфигурацию «ведущий / ведомый» и «восстановить базу данных» ведомого, затем переключите ведомое и ведущее.
0 голосов
/ 18 ноября 2010

Я думаю Уменьшение размера файла базы данных MongoDB отвечает на ваш вопрос.

...