postgresql.conf

Тема дорожной карты · PostgreSQL

postgresql.conf — главный конфигурационный файл сервера PostgreSQL, содержащий сотни параметров, управляющих выделением памяти, ограничениями соединений, поведением WAL, планированием запросов, журналированием, autovacuum и репликацией; он является центральной точкой управления при администрировании баз данных и настройке производительности. Ключевые параметры включают: shared_buffers (размер кэша разделяемой памяти), work_mem (память на операцию сортировки или хэширования), max_connections, wal_level (необходимый для репликации), effective_cache_size и log_min_duration_statement для журналирования медленных запросов. PostgreSQL читает postgresql.conf при запуске, однако многие параметры могут быть перезагружены без перезапуска вызовом SELECT pg_reload_conf() или отправкой сигнала SIGHUP; параметры, помеченные в документации как postmaster, требуют полного перезапуска. Файл postgresql.auto.conf, управляемый командой ALTER SYSTEM, имеет приоритет над postgresql.conf для любых определённых в нём параметров, позволяя изменениям во время выполнения сохраняться после перезапусков. Систематическая настройка postgresql.conf — особенно параметров памяти и WAL — является одним из наиболее эффективных видов деятельности по настройке производительности PostgreSQL при администрировании баз данных.

Как это работает

postgresql.conf делается через пакеты дистрибутива (apt/dnf), официальные PGDG-репо (свежие версии), Docker-образы (postgres:16-alpine для тестов) или managed cloud (Yandex Managed PostgreSQL, RDS). Ключевой конфиг — в postgresql.conf; правила client auth — в pg_hba.conf. Критичные параметры: shared_buffers (~25% RAM), effective_cache_size (~75%), work_mem (per-sort), maintenance_work_mem, max_connections. pgtune — для разумных дефолтов.

Когда применять

Официальные PGDG-репо в production вместо дистрибутивных — они поставляют актуальную major-версию. Postgres в Docker — только dev/test, никогда production-данные (volume-права + OOM-kill реальны); managed cloud или bare-metal с правильными бекапами — это production-уровень. Версия — в окне 5-летней поддержки.

Типичные ошибки

Ловушки postgresql.conf: дефолт max_connections=100 и "too many connections" — фикс это connection pool (PgBouncer), а не бездумное поднятие cap; рядом 16 + 13 бинари, не тот psql в PATH; дефолтный pg_hba.conf с peer auth путает новичков; не загружен pg_stat_statements с первого дня (потом не найти медленные запросы).

Связанные понятия

Полезные ресурсы