+38 (067) 901-63-22

Корзина

0 товара(ов) на сумму
0 грн.

Настройка 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

11.12.12, 17:42

Автор сообщения: К2® Рудюк Сергей Анатольевич (Блог К2 - http://corp2.net)