pg_restore中にチェックポイントが頻繁に発生している


14

PostgreSQL 9.2.2(Windows 32ビット)にはpg_restore、チェックポイントの頻度に関するログ警告を体系的に表示するコマンドがあります。たとえば:

LOG:  checkpoints are occurring too frequently (17 seconds apart)
HINT:  Consider increasing the configuration parameter "checkpoint_segments".

データベースのサイズは約3.3 Gbで、112テーブル/ 160ビューで、約14分で復元できます。

それが中に発生するのは正常pg_restoreですか?

回答:


17

DB全体の復元中は珍しいことではありません。これは非常に大きな操作だからです。通常の操作中にこれが表示される場合はcheckpoint_segments、エラーメッセージのヒントのように、永続的に設定を上げることを検討してください。

checkpoint_segments復元の直前に高く設定してから、再び低くするという問題が発生する場合があります。これは、マニュアルが示唆するものです(説明を含む)

checkpoint_segments構成変数を一時的に増やすと、大量のデータの読み込みが速くなります。これは、大量のデータをPostgreSQLにロードすると、通常のチェックポイント頻度(checkpoint_timeout構成変数で指定)よりも頻繁にチェックポイントが発生するため です。チェックポイントが発生するたびに、すべてのダーティページをディスクにフラッシュする必要があります。checkpoint_segmentsデータの一括読み込み中に一時的に増やすことにより 、必要なチェックポイントの数を減らすことができます。

関連する回答と詳細:

Postgres 9.5

今後の新しいリリースでは、よりスマートなアプローチを採用しています。ベータリリースノートを引用:

構成パラメーターcheckpoint_segmentsmin_wal_size and max_wal_size(Heikki Linnakangas)に置き換えます

これにより、大量のWALファイルを、不要な場合は保持せずに割り当てることができます。したがって、のデフォルトmax_wal_size はに増加しました1GB

余談:ビューの数はほとんど関係がなく、ビューにはデータは含まれず、「レシピ」だけが含まれます。つまり、ビューのクエリと一部の属性です。手元の質問では、基本的にバックアップファイルの合計サイズのみが重要です。


checkpoint_segmentsを30に設定すると、これらのメッセージはログに表示されなくなります。ありがとう。
セバスチャンクレメント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.