Вопрос вполне очевиден, но ответа нет.
Я постараюсь описать это немного шире, поэтому, если вам что-то кажется очевидным - просто пропустите это.
Первое - как это работает, описано здесь здесь . Для чего эти параметры описаны здесь . Другими словами - PG имеет пул процессов, которые могут что-то делать в фоновом режиме. Максимальное количество из них ограничено max_worker_processes
. Когда выполняется сканирование таблицы, это может занять много времени, поэтому было бы разумно иметь больше процессов, которые принимают данные. Это может быть сделано в фоновом режиме, ... фоновыми работниками. Узел плана запроса, который может быть выполнен ими: gather
, gather-merge
.
Каждый фоновый работник имеет свою память - для сортировки и других вещей, связанных с выполнением. Они там всегда, поэтому лучше иметь это в виду, просто чтобы убедиться, что система не использует своп ...
Кроме того. Постарайтесь определить наилучшее количество работников на запрос - по умолчанию это 2. Так что, если все работает нормально, для сбора данных используются два фоновых работника. Следующий вопрос - сколько запросов выполняется параллельно. Я имею в виду - это тяжелые запросы, требующие параллельной обработки. С учетом этих двух чисел - 4 рабочих на запрос и 10 запросов - нужно 40 рабочих, только для этого. Вы можете рассчитать, если это нормально, или поэкспериментировать с этим. Так или иначе - есть еще один параметр - max_worker_processes
. Наличие этих 40 рабочих для параллельной обработки - вам нужно больше рабочих для других задач, таких как репликация.
Это 40 звучит разумно? Здесь есть два контрапункта - по умолчанию PG - это база данных OLTP. Таким образом, система подготовлена для чего-то другого, и такого рода изменения могут принести хорошие результаты. С другой стороны - есть один bgwriter
, так что в конце концов есть один процесс, который имеет дело с I-O. Это зависит от системы, но все же, один процесс.
Таким образом, ответ далек от совершенства - вам нужно попробовать, собрать свою собственную статистику и решить.