From: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Adrien Nayrat <adrien(dot)nayrat(at)anayrat(dot)info>, Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Explain buffers wrong counter with parallel plans |
Date: | 2018-07-06 13:44:00 |
Message-ID: | CAA4eK1+Ez4MFKMB4q7SOMnTM9afV22Oov0Wh5bNsxPJoEnNE8w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Jul 3, 2018 at 4:18 PM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
> On Mon, Jul 2, 2018 at 6:02 PM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
>>
>
>> To fix the problem with Limit that you mention, we could just modify
>> nodeLimit.c so that when the state is changed from LIMIT_INWINDOW to
>> LIMIT_WINDOWEND, we also call ExecShutdownNode on the child plan.
>>
>
> It should work.
>
I have tried this idea, but it doesn't completely solve the problem.
The problem is that nodes below LIMIT won't get a chance to accumulate
the stats as they won't be able to call InstrStopNode. So the result
will be something like below:
postgres=# explain (analyze,buffers,timing off,costs off) select *
from t1 limit 50000;
QUERY PLAN
-----------------------------------------------------------------
Limit (actual rows=50000 loops=1)
Buffers: shared hit=6 read=224
-> Gather (actual rows=50000 loops=1)
Workers Planned: 2
Workers Launched: 2
Buffers: shared hit=1 read=63
-> Parallel Seq Scan on t1 (actual rows=17213 loops=3)
Buffers: shared hit=6 read=224
Planning Time: 0.105 ms
Execution Time: 1363068.675 ms
(10 rows)
In this plan, you can notice that stats (Buffers:) at Parallel Seq
Scan and Limit are same, but Gather node shows different stats. One
idea could be that in ExecShutdownNode, somehow, we allow the nodes to
count the stats, maybe by calling InstrStartNode/InstrStopNode, but
not sure if that is the best way to fix it.
Thoughts?
--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Magnus Hagander | 2018-07-06 14:29:40 | Re: shared-memory based stats collector |
Previous Message | Alexander Kuzmenkov | 2018-07-06 13:08:21 | Re: Generating partitioning tuple conversion maps faster |