2012年6月22日金曜日

gzip -1オススメ

圧縮によく使うgzip、実は圧縮率が指定できる。
100MBくらいならそこまで気にならないけど、結構違うものです。

[root@cent01 mysql]# ll -h
..
-rw-rw---- 1 mysql mysql 170M  6月 22 12:07 2012 ibdata1
..

これがターゲット。

[root@cent01 ~]# for n in `seq 1 9` ; do
> cp -ip /var/lib/mysql/ibdata1 ./ibdata.$n
> date ; gzip -$n ibdata.$n ; gzip -l ibdata.$n ; date
> echo ""
> done
とやって測定。結果はこんな。


level time[sec] ratio
1 5 57.9%
2 6 56.9%
3 6 56.9%
4 7 58.3%
5 7 58.7%
6 9 58.8%
7 12 58.8%
8 26 58.8%
9 51 59.0%



圧縮率指定せずにやったら10秒間で58.8%の圧縮率だったから、多分デフォルトはレベル6。
レベル1と比べると、1%余計に圧縮率が稼げる(1GBだったら10MB余計に圧縮)けど、
時間が倍近くかかる算段になる(1GBを45秒で圧縮してるんだったら、レベル1なら30秒くらいで済むかも)
時間が短く済むってことはCPU時間もメモリを占有する時間も減るってことで、システムにかける負荷は下がる。

でっかいバックアップを取らないといけない場合に検討すると少し幸せになるかも知れないネタ。



追伸。
このケースだと、どのレベルでも解凍にかかる時間に差はなし。
全部2~3秒のレンジに収まってた。

更に追伸。
gzip -c1 /var/lib/mysql/ibdata1 > ./ibdata1.gz でやると、
cpの分の時間が発生しないので更に速く済んでI/Oも節約できます。
リダイレクトで作るのでパーミッションだけ注意。

再追伸。
レベル2,3の方がレベル1より圧縮率が悪いのは何だ…?;

0 件のコメント :

コメントを投稿