Zrozumienie parametrów „max_wal_size” i „min_wal_size” parametrów wartości domyślnych z pliku postgresql.conf

16

Wartości domyślne to, zgodnie z dokumentacją min_wal_sizei max_wal_sizeparametrami :

Za max_wal_size: The default is 1 GB
Za min_wal_size:The default is 80 MB

Następnie szukam tych parametrów z konfiguracji bazy danych:

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

Daje wynik:

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

Mam 2 pytania:

1) Dlaczego te wartości nie pasują do wartości domyślnych, które są pokazane w dokumentach? Nigdy w ogóle nie zmieniałem ustawień konfiguracji.

2) Dlaczego unitkolumna jest pusta / NULL dla tych parametrów? Co w tym przypadku oznacza 64 i 5 wartości? MB? GB? Albo co?

Dlaczego nie jest tak jak na przykład work_memparametr, gdy wszystko jest jasne:

name         | setting  | unit
----------------------------------
work_mem     | 4096     | kB
OTAR
źródło

Odpowiedzi:

11

Domyślnie są to 16 MB segmenty WAL. Instrukcja:

System fizycznie dzieli tę sekwencję na pliki segmentów WAL, które zwykle mają rozmiar 16 MB (chociaż rozmiar segmentu można zmienić podczas budowania PostgreSQL)

Tak więc są to tylko domyślne wartości zgodnie z reklamą:

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

unitw pg_settingsjest obecny, gdy jest to rzeczywista jednostka bazowa jak sekundę lub MB . W tym przypadku „jednostką” byłyby „segmenty WAL”, które można skonfigurować przed skompilowaniem Postgres. Dla nich unitkolumna ma wartość NULL.

Erwin Brandstetter
źródło