Comprendre les valeurs par défaut des paramètres «max_wal_size» et «min_wal_size» du fichier postgresql.conf

16

Les valeurs par défaut sont, selon la documentation min_wal_sizeet les max_wal_sizeparamètres :

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

Ensuite, je regarde ces paramètres dans ma configuration de base de données:

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

Donne le résultat:

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

J'ai 2 questions:

1) Pourquoi ces valeurs ne correspondent-elles pas aux valeurs par défaut, qui sont affichées dans les documents? Je n'ai jamais changé de paramètres de configuration.

2) Pourquoi la unitcolonne est vide / NULL pour ces paramètres? Que signifie 64 et 5 valeurs dans ce cas? MB? GB? Ou quoi?

Pourquoi ce n'est pas comme par exemple un work_memparamètre, quand tout est clair:

name         | setting  | unit
----------------------------------
work_mem     | 4096     | kB
OTAR
la source

Réponses:

11

Ce sont des segments WAL de 16 Mo par défaut. Le manuel:

Le système divise physiquement cette séquence en fichiers de segments WAL, qui sont normalement de 16 Mo chacun (bien que la taille du segment puisse être modifiée lors de la construction de PostgreSQL)

Donc, ce ne sont que des valeurs par défaut comme annoncé:

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

uniten pg_settingsest présent quand il s'agit d'une unité de base réelle comme seconde ou MB . Dans ce cas, l '"unité" serait des "segments WAL", qui peuvent être configurés avant la compilation de Postgres. La unitcolonne est juste NULL pour ceux-ci.

Erwin Brandstetter
la source