PostgreSQL creates a server process for each client connection. This means that only one CPU core will be used to perform all the work. Of course, when multiple connections are active, the resources of the server machine will be used intensively. However, in the data warehouse solutions, the number of concurrent sessions is usually not very large, but they tend to perform big complex queries. It makes sense to utilize multiple CPU cores to process the queries of a single client connection.
PostgreSQL supports a feature called parallel query, which makes it possible to use multiple CPUs for one query. Certain operations, such as table scans, joins, or aggregation, can be executed in several processes concurrently. The administrator can configure the number of workers that the PostgreSQL server will create for parallel query execution. When the query optimizer can...