Solución:
Después de buscar, encontré algunas respuestas, esto puede ayudar a quien quiera habilitar y tener una configuración base, en caso de que tenga 4 núcleos (CPU):
sus procesos de trabajo máximo serán la cantidad de núcleos y el paralelo máximo debe tener la misma cantidad:
max_worker_processes = 4
max_parallel_workers = 4
la recopilación es más compleja porque este valor se puede manipular en función de sus necesidades y recursos, es necesario probarlo para obtener el mejor valor, pero para los valores de inicio puede usar cores / 2.
max_parallel_workers_per_gather = 2
Esta no es una respuesta final, faltan algunos puntos … Todavía estoy buscando y actualizando esta respuesta o esperando una mejor.
Hay una pequeña utilidad de configuración en línea que ayuda a establecer los valores principales de postgresql.conf.
No es perfecto, pero ofrece un punto de partida que puede resultar útil.
https://pgtune.leopard.in.ua/#/
La pregunta es bastante obvia, pero la respuesta no lo es.
Intentaré describir que es un poco más amplio, así que si algo le parece obvio, simplemente omítalo.
Primero, aquí se describe cómo funciona. Para qué son esos parámetros se describe aquí. En otras palabras, PG tiene un conjunto de procesos que pueden hacer algo en segundo plano. El número máximo de ellos está limitado por max_worker_processes
. Cuando se realiza el escaneo de la tabla, puede llevar mucho, mucho tiempo, por lo que sería aconsejable tener más procesos que estén tomando datos. Eso se puede hacer en segundo plano, por … trabajadores en segundo plano. Los nodos del plan de consulta que pueden realizar son: gather
, gather-merge
.
Cada trabajador en segundo plano tiene su memoria, para clasificar y otras cosas relacionadas con la ejecución. Están ahí todo el tiempo, por lo que es mejor tener eso en cuenta, solo para asegurarse de que el sistema no esté usando swap …
Aparte de eso. Intente encontrar el mejor número de trabajadores por consulta; de forma predeterminada, es 2. Entonces, si todo funciona bien, se utilizan dos trabajadores en segundo plano para recopilar datos. La siguiente pregunta es cuántas consultas se ejecutan en paralelo. Quiero decir, consultas pesadas que requieren procesamiento paralelo. Habiendo dicho dos números, 4 trabajadores por consulta y 10 consultas, se necesitan 40 trabajadores, solo para eso. Puedes calcular si eso está bien o experimentar con eso. De una forma u otra, hay un parámetro más: max_worker_processes
. Con esos 40 trabajadores para el procesamiento en paralelo, necesita más trabajadores para otras tareas, como la replicación.
¿Eso suena razonable a 40? Aquí hay dos puntos de contador: por defecto, PG es una base de datos OLTP. Entonces, el sistema está preparado para otra cosa, y ese tipo de cambio puede traer buenos resultados. Por otro lado, hay uno bgwriter
, así que, después de todo, hay un proceso que se ocupa de IO. Depende del sistema, pero aún así, de un proceso.
Entonces, la respuesta está lejos de ser perfecta: debes probar, recopilar tus propias estadísticas y decidir.