On Thu, Jan 11, 2018 at 12:24 PM, Krithika Venkatesh < krithikavenkates...@gmail.com> wrote:
> Hi All, > > I was reading about parallel queries in postgresql 10. > > I came across the property max_parallel_workers_per_gather. It sets the > maximum number of workers that can be started by a single Gather or Gather > Merge node. > > I am not able to understand gather and gather merge node. > > With parallel query in picture, there are two new types of nodes introduced in postgresql 10 viz, Gather node and other is Gather-Merge node. Now, if seq-scan has to be performed in parallel, then gather node comes into picture, which you may think of as a master node for the parallel workers which are performing sequential scan. e.g. QUERY PLAN ------------------------------------------------------------------ Gather (cost=0.00..7.60 rows=246 width=8) Workers Planned: 2 -> Parallel Seq Scan on t (cost=0.00..7.60 rows=102 width=8) Filter: (i < 50) (4 rows) Here, there are two workers which are in parallel scanning the table using seq-scan and gather is the process which collects the result of this data and passes it to the node above it, if any. Now, just like in seq-scan the order of tuples is not maintained so is the case in gather node. However, for the cases wherein you need to maintain the order, gather-merge node comes into picture. For example when index scan is used in parallel then gather-merge will be above it to collect the results of parallel scans respecting the order of indexes. What is the difference between max_parallel_workers_per_gather and > max_parallel_processes. What is meant by gather node. > > As you mentioned above, max_parallel_workers_per_gather is the total number of parallel workers allowed for a node. The parameter max_parallel_processes sets the upper limit of total parallel workers running. As a base rule, the value of max_parallel_workers_per_gather should be less than or equal to max_parallel_processes, otherwise the value of max_parallel_processes will be the maximum allowable workers for a parallel node. > You may have a look at the documentation of these parameters for more details -- https://www.postgresql.org/docs/10/static/when-can-parallel-query-be-used.html -- Regards, Rafia Sabih EnterpriseDB: http://www.enterprisedb.com/