Comprender los valores predeterminados de los parámetros "max_wal_size" y "min_wal_size" del archivo postgresql.conf

16

Los valores predeterminados son, de acuerdo con la documentación min_wal_sizey los max_wal_sizeparámetros :

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

Luego miro estos parámetros desde la configuración de mi base de datos:

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

Da resultado:

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

Tengo 2 preguntas:

1) ¿Por qué estos valores no coinciden con los valores predeterminados, que se muestran en los documentos? Nunca cambié la configuración en absoluto.

2) ¿Por qué la unitcolumna está vacía / NULL para estos parámetros? ¿Qué significa 64 y 5 valores en este caso? MB? GB? ¿O que?

Por qué esto no es como, por ejemplo work_mem, el parámetro, cuando todo está claro:

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

Respuestas:

11

Estos son segmentos WAL de 16 MB por defecto. El manual:

El sistema divide físicamente esta secuencia en archivos de segmento WAL, que normalmente tienen 16 MB cada uno (aunque el tamaño del segmento puede modificarse al crear PostgreSQL)

Entonces, son solo valores predeterminados como se anuncian:

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

unitin pg_settingsestá presente cuando se trata de una unidad base real como segunda o MB . En este caso, la "unidad" sería "segmentos WAL", que se pueden configurar antes de compilar Postgres. La unitcolumna es simplemente NULL para aquellos.

Erwin Brandstetter
fuente