Memahami parameter "max_wal_size" dan "min_wal_size" nilai default dari file postgresql.conf

16

Nilai standarnya adalah, menurut dokumentasi untuk min_wal_sizedan max_wal_sizeparameter :

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

Lalu saya melihat parameter ini dari konfigurasi basis data saya:

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

Memberikan hasil:

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

Saya punya 2 pertanyaan:

1) Mengapa nilai-nilai ini tidak cocok dengan nilai default, yang ditampilkan dalam dokumen? Saya tidak pernah mengubah pengaturan konfigurasi sama sekali.

2) Mengapa unitkolom kosong / NULL untuk parameter ini? Apa artinya nilai 64 dan 5 dalam kasus ini? MB? GB? Atau apa?

Mengapa ini tidak seperti misalnya work_memparameter, ketika semuanya jelas:

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

Jawaban:

11

Ini adalah 16 MB segmen WAL secara default. Manual:

Sistem secara fisik membagi urutan ini menjadi file segmen WAL, yang normalnya masing-masing 16MB (walaupun ukuran segmen dapat diubah ketika membangun PostgreSQL)

Jadi, itu hanya nilai default seperti yang diiklankan:

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

unitdi pg_settingshadir ketika itu merupakan unit dasar aktual seperti kedua atau MB . Dalam hal ini "unit" akan menjadi "segmen WAL", yang dapat dikonfigurasi sebelum mengkompilasi Postgres. The unitkolom hanya NULL bagi mereka.

Erwin Brandstetter
sumber