PostgreSQL. Часть 2. Нюансы настройки сервера PostgreSQL
PostgreSQL. Часть 2. Нюансы настройки сервера PostgreSQL
Эта одна из публикаций цикла конспектов по 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';