Декабрь 18, 2017, 02:39:46

Автор Тема: Настройки Postgresql для 1с  (Прочитано 27526 раз)

SeaSun

  • Новичок
  • *
  • Сообщений: 5
  • Карма: +1/-0
    • Просмотр профиля
    • Email
Настройки Postgresql для 1с
« : Октябрь 13, 2010, 11:23:22 »
Для настроек PostgreSQL используются файлы:

pg_hba.conf - политика доступа и идентификации пользователей
postgresql.conf -настройки сервера
pg_hba.conf

Используется настройки политики доступа к серверу.
Файл pg_hba.conf выглядит примерно следующим образом:

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database
# super user can access the database using some other method.
# Noninteractive
# access to all databases is required during automatic maintenance
# (autovacuum, daily cronjob, replication, and similar tasks).
#
# Database administrative login by UNIX sockets
local all postgres ident sameuser

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all ident sameuser
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

В файле по умолчанию присутствует подробная информация о формате записей, первое поле которых определяет тип записи:

    * local — эта запись определяет политику для локального доступа через локальные UNIX-сокеты.
    * host — эта запись определяет политику для сетевого TCP/IP соединения и годится для соединений с использованием SSL и без него. Для того чтобы можно было доступаться к базе данных по сети необходимо правильно настроить listen_addresses в postgresql.conf.
    * hostssl — определяется политика для сетевого соединения с обязательным использованием SSL.
    * hostnossl — антипод hostssl.

Второе поле представляет из себя имя базы данных для которой определяется политика. Имя all зарезервировано для всех баз данных, а имя sameuser для базы данных, совпадающей с именем пользователя. Имена баз данных можно перечислять через запятую. Так же в качестве имени можно добавить имя файла со списком баз, разделённых запятой или пробелами. Для этого к имени файла следует добавить символ «@» в качестве префикса.

Третье поле — имя пользователя. Как и в случае имён баз данных можно работать со списками. Имя all зарезервировано для всех пользователей. Так же доступ можно открыть для группы пользователей (role), для этого перед именем группы следует поставить знак «+».

Следующие ноль (в случае записи local), одно (нотация CIDR4 ) или два поля (адрес и сетевая маска) занимает сетевой адрес компьютера или подсети для которого настраивается политика доступа.

Предпоследнее обязательное поле отведено под метод авторизации:

    * trust — полностью доверяем этому клиенту.
    * reject — отказ в доступе.
    * ident — доступ по регистрационной записи клиента. Часто применяется для локальных соединений. RFC 1413.
    * md5 — авторизация по паролю зашифрованному с помощью алгоритма md5.
    * pam — авторизация с помощью Pluggable Authentication Modules. Этот сервис предоставляется операционной системой.
    * krb4 и krb5 — авторизация с использованием механизма Kerberos версии 4 и 5, соответственно.

 
postgresql.conf
 Управление ресурсами (Resource Consumption)

 

shared_buffers - Объём совместно используемой памяти, выделяемой PostgreSQL для кэширования данных, определяется числом страниц (shared_buffers) по 8 килобайт каждая. Естественно, данные умеет кэшировать не только сам PostgreSQL, но и операционная система сама по себе делает это очень неплохо. Поэтому нет необходимости отводить под кэш всю наличную оперативную память.

Ориентировочные значения:

Средний объём данных и 256–512 МБ доступной памяти: 16–32 МБ
Большой объём данных и 1–4 ГБ доступной памяти: 64–256 МБ

temp_buffers - Буфер под временные объекты, в основном для временных таблиц
Ориентировочное значение 16 МБ

work _mem - Под каждый запрос можно выделить личный ограниченный объём памяти для работы. Этот объём может использоваться для сортировки, объединения и других подобных операций. При превышении этого объёма сервер начинает использовать временные файлы на диске, что может существенно замедлить скорость обработки запросов. Предел для work_mem можно вычислить, разделив объём доступной памяти (физическая память минус объём занятый под другие программы и под совместно используемые страницы shared_buffers) на максимальное число одновременно используемых активных соединений.
Ориентировочное значение
При памяти 1–4Gb рекомендуется составит 32–128MB

maintenance_work _mem - Эта память используется для выполнения операций по сбору статистики (ANALYZE), сборке мусора (VACUUM), создания индексов (CREATE INDEX) и добавления внешних ключей. Размер выделяемой под эти операции памяти должен быть сравним с физическим размером самого большого индекса на диске.
Ориентировочное значение
При памяти 1–4Gb рекомендуется устанавливать 128–512MB

max_stack _depth - Специальный стек для сервера, в идеале он должен совпадать с размером стека, выставленном в ядре ОС. Установка большего значения чем в ядре может привести к ошибкам.
Ориентировочное значение 2–4MB

max_fsm_relations - Число таблиц для которых создаются карты неиспользованного пространства. По умолчанию это число равно 1000. В случае большего числа используемых таблиц это значение можно и нужно увеличить, тем более что на каждую таблицу требуется всего по семь байт.
Рекомендуется выставить параметр в соответствии с количеством таблиц в вашей базе с запасом.

max_fsm_pages - Количество блоков, для которых будет хранится информация о свободном месте. Информация хранится в разделяемой памяти, для каждой записи требуется по 6 байт. Использование этого параметра позволяет избежать использования VACUUM FULL для базы, достаточно будет VACUUM.
Этот параметр должен быть не меньше чем 16*max_fsm_relations
Данный параметр задается автоматически при создании базы утилитой initdb .
Можно задать его и вручную: в качестве начального приближения можно взять половину от среднего количества записей, изменяемых (UPDATE или DELETE) между запусками команды VACUUM.

Оценить это значение (база должна проработать уже какое-то время) можно выполнив:

vacuum full analyze;

NOTICE: number of page slots needed (196272) exceeds max_fsm_pages (153600)

HINT: Consider increasing the configuration parameter "max_fsm_pages" to a value over 196272.

max_files_per_process - Максимальное количество файлов, открываемых процессом и его подпроцессами в один момент времени. В большинстве случаев данная опция контролируется ядром системы не должна вас заботить.
Уменьшите данный параметр, если в процессе работы наблюдаете сообщение “Too many open files”.

 
Журнал транзакций (Write Ahead Log)

 fsync - Данный параметр отвечает за сброс данных из кэша на диск при завершении транзакций. Если установить его значение fsync=off то данные не будут записываться на дисковые накопители сразу после завершения операций. Это может существенно повысить скорость операций insert и update, но есть риск повредить базу, если произойдет сбой (неожиданное отключение питания, сбой ОС, сбой дисковой подсистемы).
Используйте эту возможность только если у вас имеются надежные ИБП и программное обеспечение, завершающее работу системы при низком заряде батарей. Не следует отключать fsync при работе Postgre SQL? на Windows платформе, из-за нестабильности системы

wal _sync_method - Метод который используется для принудительной записи данных на диск. Если fsync=off, то этот параметр не имеет значения.
Возможные значения:
open_datasync – запись данных методом open() с опцией O_DSYNC
fdatasync – вызов метода fdatasync() после каждого commit
fsync_writethrough – вызывать fsync() после каждого commit игнорирую паралельные процессы
fsync – вызов fsync() после каждого commit
open_sync – запись данных методом open() с опцией O_SYNC

Не все методы доступны на определенных платформах. По умолчанию устанавливается первый, который доступен в системе.

Контрольные точки (checkpoints)
По свершению каких-то определённых условий или истечению контрольного времени сервер гарантировано переносит данные, записанные в WAL непосредственно в таблицы, даже если очень сильно занят на других запросах.

checkpoint_segments - Объём кэша на диске. Физический объём места на диске, требуемый под кэш вычисляется по формуле (checkpoint_segments× 2 + 1) × 16 Мб. Следует выделить столько, сколько не жалко, осознавая, что 32 сегмента займёт на диске свыше 1 Гб.

checkpoint_timeout - Время, через которое WAL очищается насильно. По умолчанию 300 секунд.

checkpoint_warning - Если кэш а диске заполняется быстрее чем число секунд checkpoint_warning, то посылается предупреждение, которое будет передано в журнальный файл. Это намёк, что кэш на диске следует увеличить.

 wal _buffers - Количество памяти используемое в SHARED MEMORY для ведения транзакционных логов.
Ориентировочное значение
При доступной памяти 1–4GB рекомендуется устанавливать 256–1024kb

 
Планирование запросов (Query Planning)

effective_cache_size - PostgreSQL в своих планах опирается на кэширование файлов, осуществляемое операционной системой. Этот параметр соответствует максимальному размеру объекта, который может поместиться в системный кэш. Установка этого параметра не приводит к увеличению выделяемой памяти. Это значение используется только для оценки.
Ориентировочное значение

   1. effective_cache_size можно установить в 1/3 от объёма имеющейся в наличии оперативной памяти, если вся она отдана в распоряжение PostgreSQL.
   2. Значение системного кэша деленное на количество конкурентных запросов в один момент времени (среднее количество подключений к базе + запас).

default_statistics_target - Устанавливает глубину статистики по таблицам. БОльшие значения могут повысить время выполения команды ANALYZE, но улучшат построение плана запроса.
Ориентировочное значение 100

constraint_exclusion - Включает или отключает использование планером ограничений CONST RAINT в таблицах при построении запросов.
Рекомендуется установить значение on, при этом, если Вы изменяете CONST RAINT у таблиц, необходимо обновить их статистику выполнив ANALYZE, в противном случае будут построены неверные планы запросов.

 
Сбор статистики (Run-Time Statistics)

stats_command_string - Передавать ли сборщику статистики информацию о текущей выполняемой команде и времени начала её выполнения.
Рекомендуемое значение on

stats_start_col lector - Включать ли сбор статистики.
Рекомендуемое значение on

stats_row_level , stats_block _level - Собирать ли информацию об активности на уровне записей и блоков соответственно.
Рекомендуемое значение
stats_row_level=on
stats_block_level=off

 stats_reset_on_server_start - Обнулять ли статистику при перезапуске сервера
Рекомендуемое значение off

 
Автоматическая сборка мусора (Automatic Vacuuming)

autovacuum — Отвечает за включение сборки мусора.
Рекоментуемое значение on

autovacuum_naptime - Время в секундах через которое база данных проверяется на необходимость в сборке мусора. По умолчанию это происходит раз в минуту.

autovacuum_vacuum_threshold - Порог на число удалённых и изменённых записей в любой таблице по превышению которого происходит сборка мусора (VACUUM).
По умолчанию этот порог равен 1000 и его вполне можно уменьшить.

autovacuum_analyze_threshold - Порог на число вставленных, удалённых и изменённых записей в любой таблице по превышению которого запускается процесс анализа (ANALYZE).
По умолчанию это порог равен 500. Никто не запрещает сделать его поменьше.

autovacuum_vacuum_scale_factor - Процент изменённых и удалённых записей по отношению к таблице по превышению которого запускается сборка мусора.
Значение по умолчанию равно 0.4.

autovacuum_analyze_scale_factor - То же, что и предыдущая переменная, но по отношению к анализу.
Значение по молчанию равно 0.2.

 
Управление блокировками (Lock Management)

deadlock_timeout - Взаимные блокировки (deadlock) - это явление, при котором вошедшие в клинч процессы ожидают освобождение ресурсов, которые сами же и захватили. PostgreSQL умеет разрешать эту проблему путём насильного прерывания одного из процессов. Проверка на deadlock это довольно длительная процедура, поэтому, прежде чем начать проверку блокировки на предмет является ли она взаимной, сервер выжидает указанное время.
Рекомендуемое значение 2 секунды.

max_locks_per_transaction - нежёсткий лимит на число блокировок, осуществляемых в пределах транзакций. Этот параметр входит в формулу устанавливающую предел на число одновременно существующих блокировок, то есть это скорее максимальное среднее:

max_locks_per_transaction × (max_connections + max_prepared_transactions)

В документации сказано, что 64 (число стоящее по умолчанию) — это исторически проверенный предел и чтобы превзойти его требуются определённые усилия.

 
Применение параметров без перезапуска PostgreSQL


pg_ctl -D /var/lib/pgsql/data reload


Нашел вот такую замечательную статью может кому пригодиться....

Копирайт  http://www.1c-remote.ru/nastroika_postgre_dlya_1c.html

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

З.ы если выложил в неправильный раздел перенесите куда надо

lion

  • Administrator
  • Супер пользователь
  • *****
  • Сообщений: 279
  • Карма: +2/-0
    • Просмотр профиля
    • SoftLine
    • Email
Re: Настройки Postgresql для 1с
« Ответ #1 : Октябрь 13, 2010, 06:07:29 »
супер. спасибо ....
на счёт доступа к  postgreSQL есть моя заметочка может пригодится: "Невозможно подключиться к PostgreSQL, или пароль не подходит или не знаем" http://1clinux.org/index.php?topic=7.0

SeaLancer

  • Опытный пользователь
  • ***
  • Сообщений: 115
  • Карма: +1/-0
    • Просмотр профиля
Re: Настройки Postgresql для 1с
« Ответ #2 : Октябрь 22, 2011, 07:49:00 »
У меня на серваке 16Гб оперативы, имеет ли мне смысл пропорционально приведенным здесь цифрам проставлять свои параметры? Не будет ли это неэффективным расходом оперативы? (например под Work_mem выделить 256?)

SeaLancer

  • Опытный пользователь
  • ***
  • Сообщений: 115
  • Карма: +1/-0
    • Просмотр профиля
Re: Настройки Postgresql для 1с
« Ответ #3 : Июнь 08, 2012, 12:40:06 »
Чё та не могу понять. Беру тест Гилева, в файловой версии 35.97, а в SQL 11.34. При этом SQL явно работает быстрее. В чем юмор?

vag

  • Новичок
  • *
  • Сообщений: 1
  • Карма: +0/-0
    • Просмотр профиля
    • Email
Re: Настройки Postgresql для 1с
« Ответ #4 : Апрель 26, 2015, 12:57:52 »
Сегодня завалился postgres на сервере по времени примерно после ajyjdjuj автообмена (tlbycndtyysq оператор обработала несколько накладных, а потом все перестало работать) из дома починить не удалось , приехал — какой то процесс не в меру разветвился и заблокировал postgres запись в log файл. Приехал на работу снес блокированный файлик, все запустилось. В первый раз такие грабли, думал заночую тут