我计划压缩所有 Oracle 数据库服务器的 Oracle 导出转储文件以减少其磁盘空间使用量。
我的问题是:您知道任何用于压缩此类文件的良好压缩实用程序/算法吗?
答案1
我使用 4800 MB .DMP 文件进行了一些比较。结果如下:
- 放气,正常压缩:799 MB
- bzip2,正常压缩:749 MB
- PPMd,正常压缩:654 MB
然后,我对一个较小的 72 MB 的 .DMP 文件做了一些测试:
- 放气,正常压缩:21 MB
- bzip2,正常压缩:15,4 MB
- bzip2,超级压缩:15.4 MB
- LZMA(又名 7zip),正常压缩:14.3 MB(字典:16MB,字长:32)
- PPMd,正常压缩:13,3 MB
- LZMA(又名 7zip),最大压缩率:12.3 MB(字典:32MB,字长:64)
- PPMd,超级压缩:11 MB
- LZMA(又名 7zip),超级压缩:9.1 MB(字典:64MB,字长:64)
- LZMA2(也适用于 7z 格式),超级压缩:9.1 MB
所有这些测试都是使用 7Zip 完成的,压缩级别参考 7Zip 中可用的默认设置。
迄今为止的一些结论和观察
LZMA 和 LZMA2 似乎是 .DMP 文件的最佳选择。我在其他论坛上也看到有人报告了这个问题。在 7zip 中,LZMA 仅支持 2 个 CPU,而 LZMA2 支持更多(也会使用更多内存)。由于压缩结果看起来相同,因此选择 LZMA2 应该可以加快压缩速度。
现在让我们来玩一下超压缩 LZMA2 文件的单词和字典大小……
- 词大小 273 / 词典 64MB: 8,8 MB
- 词大小 273 / 词典 128MB: 8,8 MB
最终结论
7zip、7z、LZMA2 或者无论您怎么称呼它,都是可行的方法。
如果你有耐心,那么进行超级压缩是值得的。进行更大的单词大小也值得,但进行更大的字典大小可能不值得(在本测试案例中)。
我很想知道尝试这种方法的人的平均压缩率。我会尽量记住在压缩一些较大的档案后发布结果。
新结论
我一直在对此进行微调,并根据以下设置在时间/比率方面获得了最佳结果:
- 压缩级别:超高
- 压缩方法:LZMA2
- 字典大小:48MB(增大没有任何影响,减小则会显著增加最终文件大小)
- 字长:12(最高可达 16双打压缩时间,文件大小仅有轻微改善。最高可达 128三倍压缩时间,最终结果“仅”提高了 23%。如果每 MB 都很重要,就可以做到这一点……)
- 实体块大小:实体(因为我们正在压缩一个或几个大文件,这会加快压缩速度,并且对生成的文件大小没有影响)
答案2
Oracle 转储文件使用专有的二进制格式。因此您需要一种适合二进制数据的标准压缩。bzip2 非常适合二进制数据,因此我推荐它。
答案3
这里是一篇很棒的文章,我在一些 Linux 机器上制作备份脚本时用到了它。效果非常好。我最终使用 rzip 来满足我的需求。我用它来备份和压缩所有类型的数据文件,包括 SQL 数据库转储。
答案4
我首先尝试使用超压缩级别的 7zip,看看能得到什么。.7z 的效果肯定比 .zip 格式更好……