web-dev-qa-db-fra.com

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

Les valeurs par défaut sont, selon documentation pour min_wal_size et max_wal_size paramè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 colonne unit 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 work_mem paramètre, quand tout est clair:

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

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 sont juste 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');

unit dans pg_settings est présent lorsqu'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 colonne unit est juste NULL pour ceux-ci.

11