On Fri, Nov 20, 2015 at 12:45 AM, Amit Kapila <amit.kapil...@gmail.com> wrote: > Okay, but I think that's not what I am talking about. I am talking about > below code in cost_seqscan: > > - if (nworkers > 0) > > - run_cost = run_cost / (nworkers + 0.5); > > + if (path->parallel_degree > 0) > > + run_cost = run_cost / (path->parallel_degree + 0.5); > > > It will consider 50% of master backends effort for scan of each child > relation, > does that look correct to you? Wouldn't 50% of master backends effort be > considered to scan all the child relations?
In the code you originally wrote, you were adding 1 there rather than 0.5. That meant you were expecting the leader to do as much work as each of its workers, which is clearly a bad estimate, because the leader also has to do the work of gathering tuples from the workers. 0.5 might not be the right value, but it's surely better than 1. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers