On Thu, Aug 13, 2015 at 5:26 PM, Kouhei Kaigai <kai...@ak.jp.nec.com> wrote:

> > On Fri, Aug 7, 2015 at 2:15 PM, Kouhei Kaigai <kai...@ak.jp.nec.com>
> wrote:
> > >
> >
> > Sure, that is what we should do, however the tricky part would be when
> > the path for doing local scan is extremely cheaper than path for parallel
> > scan for one of the child nodes.  For such cases, pulling up Funnel-node
> > can incur more cost.  I think some of the other possible ways to make
> this
> > work could be to extend Funnel so that it is capable of executing both
> parallel
> > and non-parallel nodes, have a new Funnel like node which has such a
> > capability.
> >
> I think it is job of (more intelligent) planner but not in the first
> version. If subplans of Append are mixture of nodes which has or does
> not have worth of parallel execution, we will be able to arrange the
> original form:
>
>   Append
>    + Scan on rel1 (large)
>    + Scan on rel2 (large)
>    + Scan on rel3 (middle)
>    + Scan on rel4 (tiny)
>    + Scan on rel5 (tiny)
>
> to Funnel aware form, but partially:
>
>   Append
>    + Funnel
>    |  + Scan on rel1 (large)
>    |  + Scan on rel2 (large)
>    |  + Scan on rel3 (large)
>    + Scan on rel4 (tiny)
>    + Scan on rel5 (tiny)
>
>
This is exactly what I have in mind.


>
> Here is one other issue I found. Existing code assumes a TOC segment has
> only one contents per node type, so it uses pre-defined key (like
> PARALLEL_KEY_SCAN) per node type, however, it is problematic if we put
> multiple PlannedStmt or PartialSeqScan node on a TOC segment.
>

We have few keys in parallel-seq-scan patch
(PARALLEL_KEY_TUPLE_QUEUE and PARALLEL_KEY_INST_INFO) for
which multiple structures are shared between master and worker backends.

Check if something similar can work for your use case.

With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

Reply via email to