ASEのバックアップの圧縮レベル(compress level)で9と101どっちが圧縮率が高いか実験してみました。
compression = <compress_level> 0 ~ 9、100、または 101 の数字です。1 桁の圧縮レベルでは、0 は圧縮なし、9 は圧縮の最高レベルです。圧縮レベル 100 および 101 は、より高速で効率的な圧縮モードです。100 はより高速の圧縮、101 はより効率的な圧縮を行います。<compress_level> を指定しない場合、ダンプは圧縮されません。
具体的には圧縮に使うアルゴリズムの違いで0~9はZlib(LZW.26)、100,101はFastLZ(LZO)だそうです。
SOLMAN7.2のJAVA ASのDB(DBファイルサイズ:10,240MB)で圧縮率を比較した結果は下表のとおり。
compress level | data size(KB) | backup size(KB) | rate(%) |
process time(hh:mm:ss) |
9 | 5995082 | 4,704,634 | 78% | 0:14:21 |
100 | 5994298 | 5,133,600 | 86% | 0:04:10 |
101 | 5994234 | 5,012,184 | 84% | 0:04:20 |
まぁ、予想通り。
compress level=9でバックアップファイルを分割した場合の処理時間を比べてみる
stripe | data size(KB) | backup size(KB) | rate(%) | process time |
1 | 5,995,082 | 4,704,634 | 78% | 0:14:21 |
5 | 5,995,782 | 4,697,762 | 78% | 0:03:18 |
速い!
当然、CPUとI/Oリソースとの兼ね合いを考慮に入れる必要あり。
今回使ったコマンド
データベース[ISA]のデータベースバックアップを作成する。
分割数は4、圧縮レベルは9
dump database ISA to "/backup/work/ISA_1.bak"
at ISA_BS stripe on "/backup/work/ISA_2.bak"
at ISA_BS stripe on "/backup/work/ISA_3.bak"
at ISA_BS stripe on "/backup/work/ISA_4.bak"
at ISA_BS with compression=9
[追記]
データサイズ125GB弱のSOLMAN ABAP DBを圧縮レベル9で圧縮したバックアップファイルは47GB弱となりました。(当然マシンパワーに依存しますが)分割数5で1時間半くらいかかります。圧縮レベル100で55GB弱でした。