Сервер базы данных PostgreSQL

При установке Jowi будет установлена PosgreSQL – система управления базами данных. При этом установленная ранее СУБД будет удалена.

Перед установкой необходимо:


Конфигурирование PostgreSQL

PostgreSQL не будет использовать памяти больше, чем разрешено настройками – по умолчанию это минимальный объем памяти. При этом не стоит указывать памяти больше, чем доступно к использованию – операционная система начнет использовать файл подкачки со всеми вытекающими печальными последствиями для производительности сервера.

В Windows конфигурационные файлы PostgreSQL находятся в каталоге установки в папке Data:

Файлы текстовые, их можно править с помощью «блокнота». Строки, начинающиеся с #, считаются комментариями и игнорируются.

Параметры, относящиеся к объему памяти, могут дополняться суффиксами kB, MB, GB – килобайты, мегабайты, гигабайты. Параметры, описывающие интервалы времени, могут дополняться суффиксами ms, s, min, h, d – миллисекунды, секунды, минуты, часы, дни.

Внимание! После изменения значений требуется перезапустить службу PostgreSQL.
Буфер сервера

shared_buffers – определяет размер кэша чтения и записи PostgreSQL, общего для всех подключений. Если данные отсутствуют в кэше, они считываются диска (возможно, будут кэшированы ОС).

Если объем буфера недостаточен для хранения часто используемых рабочих данных, то они будут постоянно писаться и читаться из кэша ОС или с диска, что крайне отрицательно скажется на производительности. Но не следует указывать слишком большое значение, иначе не останется памяти для выполнения запросов клиентов и для ОС и прочих приложений. Так же сервер полагается и на кэш ОС и старается не держать в своем буфере то, что скорее всего закэшировано системой.

Рекомендации:

Память для сортировки

work_mem – содержит параметры памяти для сортировки, агрегации данных и т.д. Выделяется на каждый запрос, возможно по нескольку раз для сложных запросов.

Если памяти недостаточно, PostgreSQL будет использовать временные файлы. Если значение слишком большое – может возникнуть перерасход оперативной памяти, и ОС начнет использовать файл подкачки с соответствующим падением быстродействия.

Есть рекомендация: при расчетах взять объем доступной памяти за вычетом shared_buffers и поделить на количество одновременно исполняемых запросов. В случае сложных запросов делитель стоит увеличить, т.е. уменьшить результат.

Пример. Из расчета 5 активных пользователей (2.5 Гб - 0.5 Гб (shared_buffers)) / 5 = 400 Мб. Если СУБД сочтет запросы достаточно сложными или появятся дополнительные пользователи, значение лучше уменьшить.

Для простых запросов достаточно небольших значений – до пары мегабайт, но для сложных потребуется больше.

Рекомендация – для памяти 1-4 Гб можно использовать значения 32-128 Мб.

Временный буфер

temp_buffers - буфер под временные объекты, в основном для временных таблиц.

Можно установить порядка 16 МБ. 

Количество соединений

max_connections – определяет максимальное количество одновременных подключений к серверу базы данных. По умолчанию установлено 100 соединений.

Каждое соединение PostgreSQL потребляет ОЗУ для управления соединением или клиентом, использующим его. Чем больше соединений у вас есть, тем больше оперативной памяти вы будете использовать.

Увеличить max_connections и shared_buffers можно в /Postgresql/data/postgresql.conf.

Например, количество соединений необходимо увеличить при большом количестве терминалов (>10) и мобильных устройств (>5) – изменить

max_connections = 100 
shared_buffers = 24MB

на

max_connections = 300 
shared_buffers = 128MB

Параметр конфигурации shared_buffers определяет, сколько памяти предназначено PostgreSQL для кэширования данных.

Внимание! После изменения значений требуется перезапустить службу PostgreSQL.

Revision #3
Created 11 September 2023 12:05:37 by Thrash
Updated 11 September 2023 12:16:31 by Thrash