В моем блоге уже был цикл статей с конспектом по MySQL. Эта одна из публикаций цикла конспектов по PostgreSQL. Материал этих публикаций не особо структурирован и представляет собой просто мои заметки – конспектировал что-то новое и то, что я посчитал интересным и важным. Во второй статье я отражу наиболее важные моменты, которые я отметил в ходе изучения того, какие есть нюансы настройки сервера PostgreSQL.
Список литературы
При подготовке этого конспекта я использовал следующие материалы:
1. Книга PostgreSQL 14 Administration Cookbook.
2. Курс DBA1: Администрирование PostgreSQL 13. Базовый курс.
Нюансы настройки сервера PostgreSQL
Для больших баз данных имеет смысл увеличить параметр shared_buffers. Стандартное значение этого параметра равно 128 МБ (для версии PostgreSQL 12). Можно задачать гораздо более высокое значение, но стоит помнить, что в случае указания очень большого размера параметра есть риск использование всей оперативной памяти и большая нагрузка на файл подкачки (swap). Я находил разные рекомендации по значению этого параметра – в среднем – это 25-50% размера доступной оперативной памяти.
В случае загрузки или изменения большого количества данных имеет смыссл поднять значения для конфигурационных параметров max_wal_size и min_wal_size (WAL – Write-Ahead Logging, журнал транзакций). Это позволит разгрузить дисковую подсистему. В дополнении при таком сценарии также стоит подобрать необходимые параметры для checkpoint_timeout и checkpoint_completion_target.
Также в случае использования больших запросов стоит увеличить значение конфигурационного параметра work_mem. Но нужно предельно аккуратно повышать значение этого параметра и вести наблюдение, т.к. слишком высокое значение этого параметра можно очень быстро израсходовать всю имеющуюся оперативную память и уйти в swap.
В некоторых случаях стоит попробовать увеличить параметр temp_buffers и повторно выполнить замеры производительнотси. Особенно стоит подобрать оптимальное значения для этого параметра в случае использования PostgreSQL в качестве сервера баз данных для 1С.
По умолчанию автоматическая очистка включена (autovacuum). Убедитесь, что автоматическая очистка не отключена в конфигурационных файла. Настоятельно рекомендуется оставлять автоматическую очистку включенной.
Не выключайте параметр fsync (fsync=off) в кофигурационном файле postgresql.conf. При отключении параметра fsync возможжны сценарии потери данных в случае аварийного выключения сервера.
Еще один из вариантов внесения изменений в конфигурационный файл – это использование файла postgresql.auto.conf. Его содержимое читается после файла postgresql.conf. Внесение парамтеров в этот файл выполняется через ALTER SYSTEM и необходимо в том случае, если вы не можете вносить изменения в файл postgresql.conf. Вносить изменения можно непосредственно через консольный клиент psql. Например, изменение значение параметра work_mem:
ALTER SYSTEM SET work_mem TO '16MB';
Другие связанные статьи
PostgreSQL. Часть 1. Информационные запросы PostgreSQL
PostgreSQL. Часть 3. Управление сервером PostgreSQL
PostgreSQL. Часть 4. Безопасность в PostgreSQL
PostgreSQL. Часть 5. Мониторинг и диагностика PostgreSQL
PostgreSQL. Часть 6. Регулярное обслуживание PostgreSQL
PostgreSQL. Часть 7. Производительность и конкурентный доступ PostgreSQL
PostgreSQL. Часть 8. Резервное копирование и восстановление PostgreSQL