あなたの質問に直接答えるために、なぜ最小で、なぜ最大ではないのですか?新しいWALセグメントは、RemoveOldXlogFiles(_logSegNo, recptr)
よりも速く成長する可能性があるためです。 関数は古いものを削除できます。
また、ドキュメント内のWALセグメントの推定数を計算するための式が間違っています。私は常にcheckpoint_segments + wal_keep_segments + 1
よりもいくつかのWALを持っています より正確な式は次のとおりです。wal_keep_segments + 2 * checkpoint_segments + 1
ここに古風ですが本当に良い投稿があります: http://www.postgresql.org/message-id/[email protected]
大規模な挿入を行うと、WALセグメントは削除できるよりも速く成長します。これはちょうど今週私を手に入れました。 pg_xlogが比較的一定のサイズを維持することを期待していました。夜に大規模なプロセスが実行され、翌朝仕事に取り掛かったときに、それらのWALを配置するためにマウントしたボリュームが完全にいっぱいになったため、postgresインスタンスがクラッシュしました。 Postgresはボリュームをいっぱいにし、さらに多くのWALを書き込もうとしましたが、できず、突然死にました。幸い、pgpool2の背後でレプリカを実行しています。
興味があれば、postgresのソースコードを参照することをお勧めします。それは巨大でCですが、コードコメントは本当に役に立ちます。特にこのファイルは、チェックポイントがどのように機能し、古いWALセグメントがどのように削除されるかについての要点を理解しているため、啓蒙的です。 https://github.com/postgres/postgres/blob/master/src/backend/access/transam/xlog.c