私のバージョンのPostgres(8.4.2)のドキュメントによると、pg_dumpは「スクリプトまたはアーカイブファイル形式で出力」できます。スクリプト形式のダンプ(4GB)の復元には1.5時間かかります。アーカイブ形式の方が速いのではないかと思います。
ちなみに、私のスクリプト形式のダンプはCOPYコマンドを使用しているので、一度に1つの挿入を行うようなものではありません。
前もって感謝します。
アーカイブ形式は、復元時間にわずかな影響を与えます。
これは、実際には、プレーンフォーマットから復元する場合、以下と同等であるためです。
cat backup.file | psql emptydb
「圧縮」フォーマットから復元する場合、これは次と同等です。
pg_restore backup.file | psql emptydb
と、復元中に発生する書き込み集中型のCOPY/CREATE INDEXコマンドと比較して、pg_restoreによる解凍のコストは通常無視できます。
大きなダンプの場合、圧縮されたダンプからの復元は少し高速になる可能性があります(ディスク読み取りが少ない)。
-j
(--jobs
)オプションを使用すると、さらに高速になる可能性があります。これは「圧縮」形式でのみ使用でき、N個の同時ジョブ(セッション)で並列復元できます。
-j
オプションの詳細については、 http://www.postgresql.org/docs/8.4/static/app-pgrestore.html を参照してください。例:
pg_restore -j 4 -d emptydb backup.file