2011-06-21 6 views
1

これはPostgreSQLのしくみに関する質問です。 'COPY'コマンドを使用して大量のデータをロードすると、ログファイルの100%(checkpoint_segments)がリサイクルされる複数のチェックポイントが発生します。大きなデータロード中にチェックポイントに関する質問?

これはわかりません。単一のトランザクションで使用可能なログファイルよりも多くの領域が必要な場合、pgsqlは何を行いますか?これは、単一のトランザクションであるこの負荷の過程で複数回折り返しているようです。私は何が欠けていますか?

すべてが働いているチェックポイントは、すべてのダーティページがディスクに書き込まれるような場合、私はちょうど

答えて

1

など、私はチューンの事をすることができた場合にそれをよりよく理解したいです。これらのページはもはや失われないので、ログをもう必要としないので、リサイクルすることはありません。ダーティなページをディスクに書き込んでも、このデータがコミットされたわけではありません。 dbは、まだコミットされていないトランザクションに属している各行に格納されているメタデータを見ることができます。

大量のデータを読み込むときは、一時的にcheckpoint_segmentsを増やすことをお勧めします。

+0

素晴らしい。ありがとうございました。 –

+1

大規模なトランザクションで必要な場合、postgresqlはcheckpoint_segmentsの定義された数より多くを作成することにも注意してください。 –