Настройка Postgresql для работы с “1С:Підприємство”

Как показывает практика, не настроенная база данных Postgresql очень медленно работает в “1С:Підприємство”. Поэтому, когда говорят, что MsSQL быстрей работает, чем Postgresql с “1С:Підприємство” – не верьте. Тут вероятней всего причина кроется в настройках по умолчанию. Т.к. Postgresql по умолчанию настроен таким образом, чтоб работать на любом компьютере. И для того, чтоб использовать всю мощь Вашего сервера – немного нужно его поднастроить.

За настройку Postgresql отвечает файл: postgresql.conf

Если у Вас работает много пользователей (более 100-200), то рекомендую настроить Вам работу Postgresql через pgBouncer. Но, мы не ставим цель данной статьи описывать данную настройку… Поэтому, опишем те параметры, которые сказываются на производительности Вашего сервера:

# Если *, то слушать со всех ip-адресов. По умолчанию, слушается только localhost. Впрочем, этого Вам может хватить.
listen_addresses = ‘*’       

# Номер порта.
port = 5432                # (change requires restart)

# Максимальное количество подключений
max_connections = 100            # (change requires restart)

# shared_buffers: напомним, это НЕ вся память, которая нужна для работы PostgreSQL, это.
#только размер разделяемой между процессами PostgreSQL памяти, которая нужна для выполнения.
#активных операций. Она должна занимать меньшую часть оперативной памяти вашего.
#компьютера, так как PostgreSQL использует также дисковый кэш операционной системы..
#К сожалению, чтобы знать точное число shared buffers, нужно учесть количество.
#оперативной памяти компьютера, размер базы данных, число соединений и сложность запросов,.
#так что лучше воспользуемся несколькими простыми правилами настройки.

#На выделенных серверах полезным объемом будет значение от 8 МБ до 2 ГБ. Объем может.
#быть выше, если у вас большие активные порции базы данных, сложные запросы,.
#большое число одновременных соединений, длительные транзакции, вам доступен.
#большой объем оперативной памяти или большее количество процессоров. И, конечно же,.
#не забываем об остальных приложениях. Выделив слишком много памяти для базы данных,.
#мы можем получить ухудшение производительности. Вот несколько примеров, полученных.
#на личном опыте и при тестировании:

#    * Laptop, Celeron processor, 384MB RAM, база данных 25MB: shared_buffers 12 MB
#    * Athlon server, 1GB RAM, база данных поддержки принятия решений 10GB: 200 MB
#    * Quad PIII server, 4GB RAM, 40GB, 150 соединений, “тяжелые” транзакции: 1 GB
#    * Quad Xeon server, 8GB RAM, 200GB, 300 соединений, “тяжелые” транзакции: 2 GB

# Заметим, что увеличение числа shared_buffers и других параметров памяти потребует.
# изменения настроек System V memory вашей операционной системы. Подробнее об этом.
# можно прочитать в документации по PostgreSQL.

shared_buffers = 32MB            # min 128kB

#Буфер под временные объекты, в основном для временных таблиц.
#Можно установить порядка 16 МБ
temp_buffers = 128MB            # min 800kB

#work_mem: ранее известное как sort_mem, было переименовано, так как сейчас определяет.
#максимальное количество оперативной памяти, которое может выделить одна операция.
#сортировки, агрегации и др. Это не разделяемая память, work_mem выделяется отдельно.
#на каждую операцию (от одного до нескольких раз за один запрос). Разумное значение.
#параметра определяется следующим образом: количество доступной оперативной.
#памяти (после того, как из общего объема вычли память, требуемую для других.
#приложений, и shared_buffers) делится на максимальное число одновременных запросов.
#умноженное на среднее число операций в запросе, которые требуют памяти.

#Для веб-приложений обычно устанавливают низкие значения work_mem, так как запросов.
#обычно много, но они простые, обычно хватает от 512 до 2048 КБ. С другой.
#стороны, приложения для поддержки принятия решений с сотнями строк в каждом.
#запросе и десятками миллионов столбцов  в таблицах фактов часто требуют work_mem.
#порядка 500 МБ. Для баз данных, которые используются и так, и так, этот параметр.
#можно устанавливать для каждого запроса индивидуально, используя настройки сессии..

work_mem = 32MB                # min 64kB
#maintenance_work_mem: предыдущее название в PostgreSQL 7.x vacuum_mem. Это объем памяти,.
#который требуется PostgreSQL для VACUUM, ANALYZE, CREATE INDEX, и добавления внешних.
#ключей. Чтобы операции выполнялись максимально быстро, нужно устанавливать этот.
#параметр тем выше, чем больше размер таблиц в вашей базе данных. Неплохо бы устанавливать.
#его значение от 50 до 75% размера вашей самой большой таблицы или индекса или,.
#если точно определить невозможно, от 32 до 256 МБ.

maintenance_work_mem = 256MB        # min 1MB

#Последнее стаб. 512kB # min 100kB
max_stack_depth = 1MB            # min 100kB

fsync = off                      # turns forced synchronization on or off
synchronous_commit = off        # synchronization level; on, off, or local
wal_sync_method = fsync        # the default is the first option                    # supported by the operating system:
#   open_datasync
#   fdatasync (default on Linux)
#   fsync
#   fsync_writethrough
#   open_sync

full_page_writes = on            # recover from partial page writes

commit_delay = 10            # range 0-100000, in microseconds

commit_siblings = 5            # range 1-1000

checkpoint_segments = 200        # in logfile segments, min 1, 16MB each
checkpoint_timeout = 15min        # range 30s-1h

Be the first to comment

Leave a Reply

Your email address will not be published.


*