私は定期的に、テストに使用される小さなPostgreSQLデータベースを保存し、後で復元しています。テストの結果、そのデータは定期的に更新されます。その後、新しいダンプを作成する必要があります。ダンプは、明確に定義された状態でデータベースを再作成するために定期的に使用されます。
ダンプ(pg_dump -Fc database
を使用)には数秒しかかかりませんが、復元(pg_restore -d database
)には約1分かかります。これは奇妙に思えます。両方にほぼ同じ時間がかかると予想していました(両方のタスクがI/Oバウンドであると想定しています)。
復元に問題がありますか?もっと速くできますか?または、復元がダンプよりもはるかに長くかかるのは正常ですか? (そして、もしそうなら、なぜですか?)
ダンプファイルには通常約3〜4 MiBがあります。 DBMSはPostgreSQL V8.4で、1GiBのPentium4 3GHzで実行されていますRAM Ubuntu Linuxで。
インデックスの内容はバックアップの一部ではなく、インデックスの定義のみです。そして、それは数バイトしかかかりません。インデックスが復元中に作成され、すべてのデータにインデックスが付けられると、それははるかに大きくなります。これには時間がかかりますが、状況によって異なります。
pg_restore には、同時復元のオプションがあります(バージョン8.4以降)、--jobs=number-of-jobs
を使用します
復元の場合、データベースは多くの追加作業を行う必要があります。
すぐに頭に浮かぶことがいくつかあります。
ただし、これがその時間差に相当するかどうかはわかりません。