Skip to main content

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

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

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

  • Проверить имя пользователя и компьютера – они должны быть на английском языке.
  • Для корректной установки СУБД добавьте исключение postgres.exe в правило брандмауэра.
  • Служба «Вторичный вход в систему» должна быть установлена на «Автостарт». Это можно сделать через «Панель управления – Администрирование – Службы».
  • Контроль учетных записей UAC необходимо выключить.
  • Все установки обязательно запускать «от администратора» (по правому клику на файл). Желательно запускать установки первым делом после перезагрузки компа.
  • После каждой неудачной попытки установки Postgres следует не только ее деинсталлировать через Панель управления, но и удалить из системы пользователя по имени «postgres»: в командной строке набрать net user postgres /del. Должно появиться сообщение, что команда выполнена успешно.
  • Проверить файловую систему – при установке на FAT32 могут возникнуть ошибки, рекомендуем устанавливать СУБД на NTFS.

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

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

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

  • postgresql.conf – основной файл с настройками СУБД;
  • pg_hba.conf – файл с настройками доступа для клиентов. В частности, тут можно указать IP-адреса, с которых пользователи смогут подключаться к определенным БД;
  • pg_ident.conf – файл с преобразованием имен пользователей из системных во внутренние (вряд ли он потребуется большинству пользователей).

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

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

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

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

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

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

  • Средний объем данных, доступно 256-512 Мб – значения 16-32 Мб
  • Большой объем данных, доступно 1-4 Гб – значения 64-256 Мб или выше.
Память для сортировки

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 для кэширования данных.

  • Если у вас есть система с ОЗУ более 1 ГБ, рекомендуем установить начальное значение для shared_buffers равное 1/4 памяти системы.
  • Маловероятно, что вы найдете более 40% ОЗУ для работы лучше, чем меньшая сумма (например, 25%).
  • Для 32-разрядных сборок ОС или PostgreSQL 32-разрядная нецелесообразно устанавливать shared_buffers выше 2 ~ 2,5 ГБ.
  • Обратите внимание, что в Windows большие значения для shared_buffers не так эффективны – оставьте их относительно низкими и используйте кэш ОС для лучших результатов В Windows полезный диапазон составляет от 64 МБ до 512 МБ.
Внимание! После изменения значений требуется перезапустить службу PostgreSQL.