Tihiroのストレスフリーな生活

少しだけ頭使って後は根性

PG_DUMPの圧縮具合というか、出力されるファイルのサイズ感

概要

お客さんとお話ししていて、たまに話題になるのが、pg_dumpで圧縮(-Fc)するとどれぐらいサイズ減りますかね? っていうこと。なので記録として残しておく。

pg_dumpやpg_dumpallで出力されるファイルには、不要領域とか不要タプルとかデッドタプルとか呼ばれる領域が含まれないことにご注意ください。¥l+とかpg_relation_size、pg_database_sizeなどで確認できるデータサイズには不要領域が含まれています。そのため、VACUUM FULL した後など、不要領域が含まれていない状態でないとデータベースのサイズとpg_dumpで出力されるファイルのサイズは比較できませんよ、ということになります。

環境

計測

コマンド

pg_dump -Fc postgres > pg.dmp

結果

圧縮前 圧縮後 圧縮率
874MB 52MB 6%ぐらい
58GB 5.9GB 10%ぐらい
38.5GB 3GB 8%ぐらい
1.2GB 185MB 15%ぐらい

結論

データの内容によるけど、だいたい10%ぐらいにはなりそう?

ついでに計測

pg_dumpallについても確認してみました。

データベースクラスタのサイズ ダンプファイルのサイズ
1.2GB 約 300MB
1.8GB 約 400MB

結論

だいたい40%ぐらい? 試行回数が少なすぎるのと、こちらもデータの内容によるんじゃないかなぁと漠然とした感想。