Сервер базы данных 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.
Буфер сервера
Если объем буфера недостаточен для хранения часто используемых рабочих данных, то они будут постоянно писаться и читаться из кэша ОС или с диска, что крайне отрицательно скажется на производительности. Но не следует указывать слишком большое значение, иначе не останется памяти для выполнения запросов клиентов и для ОС и прочих приложений. Так же сервер полагается и на кэш ОС и старается не держать в своем буфере то, что скорее всего закэшировано системой.
Рекомендации:
- Средний объем данных, доступно 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.