Grundlegendes zu den Standardwerten der Parameter "max_wal_size" und "min_wal_size" in der Datei postgresql.conf

16

Standardwerte laut Dokumentation für min_wal_sizeund max_wal_sizeParameter :

Für max_wal_size: The default is 1 GB
Für min_wal_size:The default is 80 MB

Dann schaue ich mir diese Parameter aus meiner Datenbankkonfiguration an:

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

Gibt das Ergebnis:

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

Ich habe 2 Fragen:

1) Warum stimmen diese Werte nicht mit den Standardwerten überein, die in der Dokumentation angezeigt werden? Ich habe die Konfigurationseinstellungen nie geändert.

2) Warum ist die unitSpalte für diese Parameter leer / NULL? Was bedeutet in diesem Fall 64 und 5 Werte? MB? GB? Oder was?

Warum ist dies nicht wie zum Beispiel work_memParameter, wenn alles klar ist:

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

Antworten:

11

Dies sind standardmäßig 16-MB-WAL-Segmente. Das Handbuch:

Das System teilt diese Sequenz physisch in WAL-Segmentdateien auf, die normalerweise 16 MB groß sind (obwohl die Segmentgröße beim Erstellen von PostgreSQL geändert werden kann).

Es handelt sich also nur um die angegebenen Standardwerte:

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_settingsist vorhanden, wenn es sich um eine tatsächliche Basiseinheit wie second oder MB handelt . In diesem Fall wäre die "Einheit" "WAL-Segmente", die vor dem Kompilieren von Postgres konfiguriert werden können. Die unitSpalte ist für diese nur NULL.

Erwin Brandstetter
quelle