Sinnvolle Werte für *parallel_workers*?

Hallo,

ich werde aus der Dokumentation nicht schlau. Sind die Werte für

max_parallel_workers
max_worker_processes
max_parallel_maintenance_workers
max_parallel_workers_per_gather

von der Anzahl der Kerne abhängig oder wie wären die Sinnvolle Werte bei 8 Kerne CPU?
Mit der Anzahl der Kerne kann ich mir zwar nicht ganz vorstellen, denn laut Doku ist der Standardwert “8” bei den ersten beide. Wenn man also weniger Kerne hätte, wäre es auch ggf. Suboptimal. Somit denke ich eher - etwas anders spielt da eine Rolle wie man die Werte setzen soll. Aber was entweder verstehe ich es nicht, oder die Dokumentation schweigt darüber (OK es gibt noch die Möglichkeit, dass es da steht und ich sehe es nicht oder den Zusammenhang nicht erkenne)

da gibt es mehr Faktoren, die wir nicht wissen:

  • Anzahl max. gleich connections?
  • workload, also wie stark sind die Abfragen parallel ausführbar?
  • Tabellengrößen

Es gibt auch grundlegende Unterschiede der Nutzung:

postgres=# select name, short_desc from pg_settings where name in ('max_parallel_workers','max_parallel_maintenance_workers');
               name               |                                 short_desc                                  
----------------------------------+-----------------------------------------------------------------------------
 max_parallel_maintenance_workers | Sets the maximum number of parallel processes per maintenance operation.
 max_parallel_workers             | Sets the maximum number of parallel workers that can be active at one time.
(2 rows)

Die max_parallel_workers sollten nicht höher sein als die tatsächlichen Cores. Andererseits ist es auch so, daß ein Prozess auf Daten aus dem Speicher wartet - damit könnten auch wieder mehr als reine Cores da sind gleichzeitig laufen.