タイプ: enum
デフォルト: replica
コンテキスト: postmaster
再起動: true
値: [minimal, replica, logical]

wal_levelはどれだけの情報がWALに書かれるかを決定します。デフォルト値はreplicaで、WALアーカイビングおよびレプリケーションをサポートするために十分なデータを書き出し、これにはスタンバイサーバで読み取り専用の問い合わせを実行することも含みます。minimalはクラッシュまたは即時停止から回復するのに必要な情報を除き、すべてのログを削除します。最後に、logicalは、更にロジカルデコーディングをサポートするのに必要な情報を追加します。それぞれのレベルは、下位のレベルのログ出力を含んでいます。このパラメータはサーバ起動時のみ設定可能です。

minimalレベルでは、一部の巨大な操作でのWAL出力は安全に省略でき、そうすることで、それらの操作が大幅に高速になります(populate-pitrを参照してください)。この最適化が適用される操作には以下のものがあげられます。

  • CREATE TABLE AS
  • CREATE INDEX
  • CLUSTER
  • 同一トランザクション内で作成されたか、もしくは切り詰められたテーブルに対するCOPY
しかしminimal WALはベースバックアップとWALログからデータを再構築するための充分な情報を持ち合わせていません。したがって、WALアーカイビング(archive_mode)とストリーミングレプリケーションを有効にするには、replica以上を使用しなければなりません。

logicalレベルでは、replicaと同じ情報がログされるのに加え、ロジカルチェンジセットをWALから取り出すのに必要な情報が追加されます。logicalを使うとWALの量が増えます。とりわけ、多数のテーブルがREPLICA IDENTITY FULLと設定されていて(訳注: ALTER TABLE参照)、多くのUPDATEDELETE文が実行される場合はこのことが言えます。

9.6よりも前のリリースでは、このパラメータはarchivehot_standbyという設定値も可能でした。引き続きこれらも受け付けられますが、replicaへとマップされます。

推奨事項 [EN]

Level replica is required for binary replication, and level logical is required for logical replication. This is a setting because raising the level adds more writes to the WAL, so if you’re not doing replication or archiving at all, set it to minimal.

件のコメント