Re: Parallel Append implementation
Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
From: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
To: Amit Khandekar <amitdkhan.pg@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-03-10T08:35:39Z
Lists: pgsql-hackers
>>>> >>> >>> I think there is some merit in separating out non-parallel and >>> parallel plans within the same array or outside it. The current logic >>> to assign plan to a worker looks at all the plans, unnecessarily >>> hopping over the un-parallel ones after they are given to a worker. If >>> we separate those two, we can keep assigning new workers to the >>> non-parallel plans first and then iterate over the parallel ones when >>> a worker needs a plan to execute. We might eliminate the need for >>> special value -1 for num workers. You may separate those two kinds in >>> two different arrays or within the same array and remember the >>> smallest index of a parallel plan. > > Do you think we might get performance benefit with this ? I am looking > more towards logic simplicity. non-parallel plans would be mostly > likely be there only in case of UNION ALL queries, and not partitioned > tables. And UNION ALL queries probably would have far lesser number of > subplans, there won't be too many unnecessary hops. A partitioned table which has foreign and local partitions would have non-parallel and parallel plans if the foreign plans can not be parallelized like what postgres_fdw does. > The need for > num_workers=-1 will still be there for partial plans, because we need > to set it to -1 once a worker finishes a plan. > IIRC, we do that so that no other workers are assigned to it when scanning the array of plans. But with the new scheme we don't need to scan the non-parallel plans for when assigning plan to workers so -1 may not be needed. I may be wrong though. -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company
Commits
-
Update parallel.sgml for Parallel Append
- ac535cd47806 11.0 landed
- e80f2b335ecd 12.0 landed
-
Support Parallel Append plan nodes.
- ab7271677812 11.0 landed
-
Remove BufFile's isTemp flag.
- 11e264517dff 11.0 cited
-
Improve comments for parallel executor estimation functions.
- 11c1d555cebe 11.0 landed
-
Separate reinitialization of shared parallel-scan state from ExecReScan.
- 41b0dd987d44 11.0 cited
-
Eat XIDs more efficiently in recovery TAP test.
- 08aed6604de2 10.0 cited
-
Avoid syntax error on platforms that have neither LOCALE_T nor ICU.
- 457a44487328 10.0 cited
-
Preparatory refactoring for parallel merge join support.
- a71f10189dc1 10.0 cited