Как показывает практика, не настроенная база данных 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
Leave a Reply