[pgsql-jp: 38840] pg_dump で時間がかかる

藤澤 qsecofr1 @ hotmail.com
2007年 10月 5日 (金) 22:17:28 JST


藤澤です。


Windows の PostgreSQL 8.2.4 で pg_dump でバックアップを取ろうと
していますが、時間がかかって泣きそうです。


データベースのサイズを、
    select pg_database_size('hogedb');
で確認すると 36.15 GB です。(起動時にVACUUMがかかった直後のサイズです。)

このバックアップを
    pg_dump -h localhost -d hogedb -U hoge -F c -c -v -f .\dump\hoge_dump.car
で取得しようとしたところ、9:30am にスタートして、22:00までかかって、
40GBまでダンプファイルのサイズが大きくなりました。
※事情により、途中で中断しました。


時間がどんどん経過して、焦ると同時に以下のような疑問が湧いています。
  --------------------------------------------------------------
  ★疑問1:pg_dump はこんなに時間がかかるのか?

  ★疑問2:ダンプファイルは、-F c  (custam archive) を指定しているのに、
            データベースサイズより大きくなるのか?
  --------------------------------------------------------------

疑問1については、以下の情報を見ると、53GB のデータベースを pg_dump -F c 
で取得した時には、1時間20分ほどで終わっているようです。
    OSDL DBT-1 によるPostgreSQL8.1.4のバックアップ・リストア性能に関する考察
    http://ossipedia.ipa.go.jp/capacity/EV0612270347/
  * Windows かどうかの記述はありませんでしたが。。。



データの特徴として、
あるテーブルに、bytea 型の列が2つあり、それぞれに画像
データ(いずれも約400KB)が格納されていて、それが4万件あります。
    (400KB + 400KB) × 40,000 = 約32GB
つまり、データベースのほとんどは、このテーブルが占めています。

データベースのチューニングは全く行っておらず、postgreSQL.conf の内容は
初期値のままです。

pg_dump を行っている間にもデータの更新を行っていました。


その他の環境は以下です。
------------------------------------------
Windows Server 2003
PostgreSQL 8.2.4
ディスク: 30GB * 6 を、RAID5 構成  (1.3 TB)
メモリ  : 2GB
------------------------------------------



また、後日チャレンジしてみますが、情報をお持ちの方が居られましたら、
よろしくお願いします。


/藤澤





pgsql-jp メーリングリストの案内