web-dev-qa-db-ja.com

postgresql.confファイルの「max_wal_size」および「min_wal_size」パラメータのデフォルト値について

デフォルト値は min_wal_sizeおよびmax_wal_sizeパラメータ

ために max_wal_sizeThe default is 1 GB
ために min_wal_sizeThe default is 80 MB

次に、データベース構成からこのパラメーターを調べます。

select name, setting, unit 
from pg_settings 
where name in ('min_wal_size', 'max_wal_size')

結果を与える:

name         |  setting | unit
----------------------------------
max_wal_size | 64       | 
min_wal_size | 5        |

2つの質問があります。

1)これらの値が、ドキュメントに示されているデフォルト値と一致しないのはなぜですか?設定をまったく変更していません。

2)これらのパラメーターのunit列が空/ NULLなのはなぜですか?この場合、64と5の値はどういう意味ですか? MBGB?または何?

なぜこれは例えばwork_memパラメータ、すべてが明確な場合:

name         | setting  | unit
----------------------------------
work_mem     | 4096     | kB
16
Oto Shavadze

これらはデフォルトで16 MBのWALセグメントです。 マニュアル:

システムはこのシーケンスを物理的にWALセグメントファイルに分割します。WALセグメントファイルは通常、それぞれ16MBです(ただし、PostgreSQLの構築時にセグメントサイズを変更できます)。

したがって、これは宣伝されているデフォルト値にすぎません。

select name, setting, setting::int * 16 || 'MB' AS setting_in_mb
from pg_settings 
where name in ('min_wal_size', 'max_wal_size');

unit in pg_settingsは、secondまたは[〜#〜] mb [〜#〜のような実際の基本単位である場合に存在します。 ]。この場合、「ユニット」は「WALセグメント」となり、Postgresをコンパイルする前に構成できます。これらの場合、unit列はNULLです。

11