Назад | Перейти на главную страницу

Какой хороший алгоритм сжатия можно использовать для файлов Oracle .DMP

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

Мой вопрос: знаете ли вы какую-нибудь хорошую утилиту / алгоритм сжатия для сжатия этого типа файлов?

Я провел несколько сравнений, используя файл .DMP размером 4800 МБ. В результате чего:

  • deflate, обычное сжатие: 799 МБ
  • bzip2, обычное сжатие: 749 МБ
  • PPMd, обычное сжатие: 654 МБ

Затем я провел несколько тестов с меньшим файлом .DMP, размером 72 МБ:

  • deflate, обычное сжатие: 21 МБ
  • bzip2, обычное сжатие: 15,4 МБ
  • bzip2, ультра сжатие: 15,4 МБ
  • LZMA (он же 7zip), нормальное сжатие: 14,3 МБ (словарь: 16 МБ, размер слова: 32)
  • PPMd, обычное сжатие: 13,3 МБ
  • LZMA (он же 7zip), максимальное сжатие: 12,3 МБ (словарь: 32 МБ, размер слова: 64)
  • PPMd, сверхсжатие: 11 МБ
  • LZMA (он же 7zip), сверхсжатие: 9,1 МБ (словарь: 64 МБ, размер слова: 64)
  • LZMA2 (также доступен для формата 7z), сверхсжатие: 9,1 МБ

Все эти тесты проводились с 7Zip, а уровни сжатия относятся к настройкам по умолчанию, доступным в 7Zip.

Некоторые выводы и наблюдения на данный момент
LZMA и LZMA2 кажутся лучшими вариантами для файлов .DMP. Я видел, как другие люди тоже сообщали об этом на других форумах. В 7zip LZMA поддерживает только 2 процессора, а LZMA2 поддерживает больше (также будет использовать больше памяти). Поскольку результаты сжатия выглядят одинаково, выбор LZMA2 должен привести к более быстрому сжатию.

Теперь давайте поиграем со словом и размером словаря для сверхсжатых файлов LZMA2 ...

  • Размер слова 273 / словарь 64 МБ: 8,8 МБ
  • Размер слова 273 / словарь 128 МБ: 8,8 МБ

Окончательные выводы
7zip, 7z, LZMA2 или как вы его называете, это то, что вам нужно.

Если у вас есть терпение, ультра компрессия окупится. Еще больший размер слова также окупается, но использование словаря большего размера может и не оказаться (в этом тестовом примере).

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

Новые выводы
Я тонко настраивал это и получил наилучшие результаты по времени / соотношению со следующими настройками:

  • Уровень сжатия: ультра
  • Метод сжатия: LZMA2
  • Размер словаря: 48 МБ (увеличение размера никак не влияет, уменьшение размера значительно увеличивает размер файла)
  • Размер слова: 12 (до 16 удваивается время сжатия с незначительным улучшением размера файла. Достигая 128 тройнички время сжатия, опять же с лучшим конечным результатом «всего» на 23%. Мог ли это сделать, каждый МБ на счету ...)
  • Размер твердого блока: твердый (поскольку мы сжимаем один или несколько огромных файлов, это ускоряет сжатие и не влияет на размер файла)

Файлы дампа Oracle используют собственный двоичный формат. Итак, вам нужно стандартное сжатие, подходящее для двоичных данных. bzip2 хорош с двоичными данными, поэтому я бы рекомендовал это.

ВОТ - отличная статья, которую я использовал при создании сценария резервного копирования на некоторых Linux-машинах. Сработало действительно хорошо. В итоге я использовал rzip для своих нужд. Я использовал его для резервного копирования и сжатия всех типов файлов данных, включая дампы базы данных SQL.

Основываясь на ответе @Wouter, я смог добиться хорошего результата со следующими параметрами (примерно в 3 раза меньший словарь и в 10 раз больший размер слова - не могу подтвердить его влияние на время сжатия):

7z a -r -ms=e4g -mqs+ -m0=LZMA2:a=0:d=18m:mf=hc4:fb=128:mc=5:lc=4:lp=0:pb=0 -bt outfile.7z @items_to_archive.txt

Он дает степень сжатия 0,12 (сжатые размеры / исходный размер) и на 18 ... 20% быстрее, чем -mx4. Более высокое сжатие может быть достигнуто с помощью a=1, более высокие значения для d, fb и mc за счет увеличения времени сжатия.

Для сравнения, метод WinRar «Лучший» с параметрами по умолчанию дает коэффициент сжатия 0,11 и примерно в 6 раз медленнее, метод «Самый быстрый» дает сжатие 0,17 и в 1,5 раза быстрее. Однако архивы Rar извлекаются в 3 раза быстрее.

Я сначала попробую использовать 7zip с ультра-уровнем сжатия и посмотрю, что вы можете получить. Я определенно получаю лучшие результаты от .7z, чем от .zip формата ...

bzip2 обычно является моим ответом по умолчанию на такую ​​задачу.