Re: Explain buffers wrong counter with parallel plans - Mailing list pgsql-hackers

From Amit Kapila
Subject Re: Explain buffers wrong counter with parallel plans
Date
Msg-id CAA4eK1LSuSDS75yaqRPaBZwTX--F53tTf3MCC_8Htjbri-+tTg@mail.gmail.com
Whole thread Raw
In response to Re: Explain buffers wrong counter with parallel plans  ("Jonathan S. Katz" <jonathan.katz@excoventures.com>)
Responses Re: Explain buffers wrong counter with parallel plans  ("Jonathan S. Katz" <jonathan.katz@excoventures.com>)
List pgsql-hackers
On Wed, Jul 25, 2018 at 7:42 PM, Jonathan S. Katz
<jonathan.katz@excoventures.com> wrote:
>
> On Jul 7, 2018, at 12:03 AM, Amit Kapila <amit.kapila16@gmail.com> wrote:
>
> I tried running the below on both 11beta2 and HEAD with the patch
> applied:
>
> CREATE UNLOGGED TABLE t1 (c1 int);
> INSERT INTO t1 SELECT generate_series(1,100000000);
> /** restart PostgreSQL */
> EXPLAIN (analyze,buffers,timing off,costs off)
> SELECT count(*) FROM t1;
> /** repeat above two queries */
>
> I have identical postgresql.conf files on both instances as well.
>
> 11beta2
> ======
>     buffers=# explain (analyze,buffers,timing off,costs off) select count(*)
>     from t1;
>                                     QUERY PLAN
>
> --------------------------------------------------------------------------
>      Finalize Aggregate (actual rows=1 loops=1)
>        Buffers: shared read=63175
>        ->  Gather (actual rows=7 loops=1)
>              Workers Planned: 6
>              Workers Launched: 6
>              Buffers: shared read=63175
>              ->  Partial Aggregate (actual rows=1 loops=7)
>                    Buffers: shared read=442478
>                    ->  Parallel Seq Scan on t1 (actual rows=14285714
> loops=7)
>                          Buffers: shared read=442478
>      Planning Time: 1.422 ms
>      Execution Time: 3214.407 ms
>     (12 rows)
>
>     buffers=# explain (analyze,buffers,timing off,costs off) select count(*)
>     from t1;
>                                     QUERY PLAN
>
> --------------------------------------------------------------------------
>      Finalize Aggregate (actual rows=1 loops=1)
>        Buffers: shared hit=27 read=64960
>        ->  Gather (actual rows=7 loops=1)
>              Workers Planned: 6
>              Workers Launched: 6
>              Buffers: shared hit=27 read=64960
>              ->  Partial Aggregate (actual rows=1 loops=7)
>                    Buffers: shared hit=224 read=442254
>                    ->  Parallel Seq Scan on t1 (actual rows=14285714
> loops=7)
>                          Buffers: shared hit=224 read=442254
>      Planning Time: 0.080 ms
>      Execution Time: 3774.091 ms
>     (12 rows)
>
> HEAD
> =====
>     buffers=# explain (analyze,buffers,timing off,costs off) select count(*)
>     from t1;
>                                     QUERY PLAN
>
> --------------------------------------------------------------------------
>      Finalize Aggregate (actual rows=1 loops=1)
>        Buffers: shared read=442478
>        ->  Gather (actual rows=7 loops=1)
>              Workers Planned: 6
>              Workers Launched: 6
>              Buffers: shared read=442478
>              ->  Partial Aggregate (actual rows=1 loops=7)
>                    Buffers: shared read=442478
>                    ->  Parallel Seq Scan on t1 (actual rows=14285714
> loops=7)
>                          Buffers: shared read=442478
>      Planning Time: 1.594 ms
>      Execution Time: 6207.799 ms
>     (12 rows)
>
>     buffers=# explain (analyze,buffers,timing off,costs off) select count(*)
>     from t1;
>                                     QUERY PLAN
>
> --------------------------------------------------------------------------
>      Finalize Aggregate (actual rows=1 loops=1)
>        Buffers: shared hit=224 read=442254
>        ->  Gather (actual rows=7 loops=1)
>              Workers Planned: 6
>              Workers Launched: 6
>              Buffers: shared hit=224 read=442254
>              ->  Partial Aggregate (actual rows=1 loops=7)
>                    Buffers: shared hit=224 read=442254
>                    ->  Parallel Seq Scan on t1 (actual rows=14285714
> loops=7)
>                          Buffers: shared hit=224 read=442254
>      Planning Time: 0.074 ms
>      Execution Time: 5006.395 ms
>     (12 rows)
>
> Notice the “read” numbers just before the “Finalize Aggregate” is much
> higher,
>

You mean to say the number (Buffers: shared read=442478) in HEAD,
right?  If so, yeah, I am also wondering why the results of the patch
are different in HEAD and 11beta2.  So, if I read correctly, the
numbers in 11beta2 appears correct, but on HEAD it is not correct, it
should have divided the buffers read by loops.  I will figure that
out, but this is just to clarify that both of us are seeing the
results in the same way.

>and there appears to be a performance hit.
>

Do you mean to say the performance of the same query in 11beta2 and
HEAD or something else?

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


pgsql-hackers by date:

Previous
From: David Rowley
Date:
Subject: Re: Making "COPY partitioned_table FROM" faster
Next
From: David Rowley
Date:
Subject: Re: Making "COPY partitioned_table FROM" faster