MongoDB выделяет файлы данных, как это:
Во-первых, пространство имен файлов (mydb.ns
) и файл данных с 64Мб (mydb.0
). Если требуемое пространство увеличивается, оно добавит 128 МБ-файл (mydb.1
) и продолжит это, удваивая размер файла каждый раз, пока файлы не будут иметь 2 ГБ каждый (mydb.5
и далее).
Это несколько агрессивный шаблон распределения. Если вы выполняете множество обновлений и удалений на месте, ваши файлы данных могут сильно фрагментироваться. Запуск repair database command через db.runCommand({repairDatabase:1})
может помочь, но для этого требуется еще больше места на диске во время его запуска, и он останавливает запись в БД. Удостоверьтесь, что внимательно прочитал документацию.
Перед тем, как сделать это, запустите db.stats()
, а затем сравнить dataSize
(количество данных, которые вы на самом деле сохраненную), storageSize
(выделенный размер, включая обивку, но без индексов), и fileSize
(Дисковое пространство, выделенное). Если различия огромны (факторы> 3), ремонт, вероятно, восстановит довольно много дискового пространства. Если нет, это не поможет вам, потому что оно не может магически уменьшить ваши данные.
Это не резервные копии, а файлы пространственных данных + базы данных. Вот как механизм хранения сохраняет ваши данные на диск –
Hello Orid, Спасибо за ваш ответ. Моя проблема в том, что размер моей базы данных достиг 30 ГБ, включая все «файлы данных» и файл пространства имен базы данных. Из-за этого операции чтения и записи становятся медленными. Не могли бы вы предложить мне способ, с помощью которого я могу увеличить скорость ответа mongo Db. – Tarun