Понимание значений параметров по умолчанию «max_wal_size» и «min_wal_size» из файла postgresql.conf

16

Значения по умолчанию, в соответствии с документацией min_wal_sizeи max_wal_sizeпараметрами :

Для max_wal_size: The default is 1 GB
Для min_wal_size:The default is 80 MB

Затем я смотрю эти параметры из моей базы данных конфигурации:

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

Дает результат:

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

У меня есть 2 вопроса:

1) Почему эти значения не соответствуют значениям по умолчанию, которые показаны в документах? Я никогда не менял настройки конфига.

2) Почему unitстолбец пуст / NULL для этих параметров? Что значит 64 и 5 значений в этом случае? MB? GB? Или что?

Почему это не так, например, work_memпараметр, когда все понятно:

name         | setting  | unit
----------------------------------
work_mem     | 4096     | kB
OTAR
источник

Ответы:

11

По умолчанию это 16 МБ сегментов WAL. Руководство:

Система физически делит эту последовательность на файлы сегментов WAL, которые обычно имеют размер 16 МБ (хотя размер сегмента можно изменить при сборке PostgreSQL)

Итак, это просто значения по умолчанию, как объявлено:

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_settingsприсутствует, когда это фактическая базовая единица, например секунда или мегабайт . В этом случае «единицей» будут «сегменты WAL», которые можно настроить перед компиляцией Postgres. unitСтолбец просто NULL для тех.

Эрвин Брандштеттер
источник