Compreendendo os valores padrão dos parâmetros "max_wal_size" e "min_wal_size" do arquivo postgresql.conf

16

Os valores padrão são, de acordo com a documentação min_wal_sizee max_wal_sizeparâmetros :

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

Então eu olho esses parâmetros na minha configuração do banco de dados:

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

Dá resultado:

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

Eu tenho 2 perguntas:

1) Por que esses valores não correspondem aos valores padrão, mostrados nos documentos? Eu nunca mudei as configurações.

2) Por que a unitcoluna está vazia / NULL para esses parâmetros? O que significa 64 e 5 valores neste caso? MB? GB? Ou o que?

Por que isso não é como, por exemplo work_mem, parâmetro, quando tudo está claro:

name         | setting  | unit
----------------------------------
work_mem     | 4096     | kB
OTAR
fonte

Respostas:

11

Esses são segmentos WAL de 16 MB por padrão. O manual:

O sistema divide fisicamente essa sequência em arquivos de segmento WAL, que normalmente têm 16 MB cada (embora o tamanho do segmento possa ser alterado ao criar o PostgreSQL)

Portanto, são apenas os valores padrão conforme anunciados:

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

unitem pg_settingsestá presente quando é uma unidade de base real como segunda ou MB . Nesse caso, a "unidade" seria "segmentos WAL", que podem ser configurados antes da compilação do Postgres. A unitcoluna é apenas NULL para eles.

Erwin Brandstetter
fonte