2018-04-16 15:52 GMT+02:00 Tomas Vondra <tomas.von...@2ndquadrant.com>:

> > Query Performs nicely, but no parallel workers are used:
> > GroupAggregate  (cost=2611148.87..2611152.89 rows=31 width=22) (actual
> > time=0.084..0.084 rows=0 loops=1)
> >    Group Key:
> > f_zendesktickets_aaeljtllr5at3el.cstm_custom_38746665_primary_column
> >    ->  Sort  (cost=2611148.87..2611149.11 rows=99 width=28) (actual
> > time=0.082..0.082 rows=0 loops=1)
> >          Sort Key:
> > f_zendesktickets_aaeljtllr5at3el.cstm_custom_38746665_primary_column
> >          Sort Method: quicksort  Memory: 25kB
> >          ->  Nested Loop  (cost=1639.25..2611145.59 rows=99 width=28)
> > (actual time=0.076..0.076 rows=0 loops=1)
> >                Join Filter:
> > (((f_ticketattributeshistory_aajzjp98uraszb6.attrnewvalue_id = ANY
> > ('{4757,4758,4759}'::integer[])) AND (4754 =
> > f_ticketattributeshistory_aajzjp98uraszb6.attroldvalue_id) AND (4790 =
> > f_ticketattributeshistory_aajzjp98uraszb6.ticketfield_id)) OR
> > (f_zendesktickets_aaeljtllr5at3el.dt_createda
> > t_id = f_ticketupdate_aad5jtwal0ayaax.dt_event_id))
> >                ->  Nested Loop  (cost=1638.81..1809540.39 rows=350270
> > width=20) (actual time=0.075..0.075 rows=0 loops=1)
> >                      ->  Nested Loop  (cost=1638.24..1508474.08
> > rows=69140 width=8) (actual time=0.075..0.075 rows=0 loops=1)
> >                            ->  Bitmap Heap Scan on
> > dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_aaewg8j61iagl1z
> > dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_aaewg8j61ia
> > (cost=4.34..27.35 rows=7 width=4) (actual time=0.026..0.038 rows=7
> loops=1)
> >                                  Recheck Cond: (6171 = id_euweek)
> >                                  Heap Blocks: exact=7
> >                                  ->  Bitmap Index Scan on
> > dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_a_id_euweek_idx
> > (cost=0.00..4.33 rows=7 width=0) (actual time=0.019..0.019 rows=7
> loops=1)
> >                                        Index Cond: (6171 = id_euweek)
> >                            ->  Bitmap Heap Scan on
> > f_ticketupdate_aad5jtwal0ayaax  (cost=1633.90..214617.67 rows=87472
> > width=8) (actual time=0.004..0.004 rows=0 loops=7)
> >                                  Recheck Cond: (dt_event_id =
> > dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_aaewg8j61ia.id
> > <http://dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_aaewg8j61ia.id
> >)
> >                                  ->  Bitmap Index Scan on
> > f_ticketupdate_aad5jtwal0ayaax_dt_event_id_idx  (cost=0.00..1612.03
> > rows=87472 width=0) (actual time=0.003..0.003 rows=0 loops=7)
> >                                        Index Cond: (dt_event_id =
> > dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_aaewg8j61ia.id
> > <http://dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_aaewg8j61ia.id
> >)
> >                      ->  Index Scan using
> > f_ticketattributeshistory_aajzjp98uraszb6_ticketupdate_id_idx on
> > f_ticketattributeshistory_aajzjp98uraszb6  (cost=0.57..4.12 rows=23
> > width=20) (never executed)
> >                            Index Cond: (ticketupdate_id =
> > f_ticketupdate_aad5jtwal0ayaax.id
> > <http://f_ticketupdate_aad5jtwal0ayaax.id>)
> >                ->  Index Scan using
> > f_zendesktickets_aaeljtllr5at3el_pkey on
> > f_zendesktickets_aaeljtllr5at3el  (cost=0.43..2.27 rows=1 width=12)
> > (never executed)
> >                      Index Cond: (id =
> > f_ticketattributeshistory_aajzjp98uraszb6.zendesktickets_id)
> >                      Filter: ((4765 <> status_id) AND (group_id = 17429))
> >  Planning time: 8.516 ms
> >  Execution time: 1.895 ms
> >
> > the speed is back
> >
>
> Yeah, but the cost is higher (2611152 vs. 1949508). So clearly, the
> database believes it's going to be cheaper. I suspect a part of the
> issue might be that the join is misestimated - it's expected to produce
> ~29k rows, but produces 0.
>
> Can you check if this query has the same issue? It's just the
> problematic join, and it should be simpler to investigate:
>
> SELECT count(*)
>   FROM f_ticketupdate_aad5jtwal0ayaax AS f
>   INNER JOIN
>   dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_aaewg8j61iagl1z AS d
>   ON (f.dt_event_id = d.id)
>
>

db_sq3rjf5b7p309lq9wuqrh3qhk4gy9fbw=#  set  max_parallel_workers_per_
gather=2;
SET
db_sq3rjf5b7p309lq9wuqrh3qhk4gy9fbw=# explain analyze SELECT count(*)
db_sq3rjf5b7p309lq9wuqrh3qhk4gy9fbw-#   FROM f_ticketupdate_aad5jtwal0ayaax
AS f
db_sq3rjf5b7p309lq9wuqrh3qhk4gy9fbw-#   INNER JOIN
db_sq3rjf5b7p309lq9wuqrh3qhk4gy9fbw-#   dwh_dm_aabv5kk9rxac4lz_
aaonw7nchsan2n1_aad8xhr0m_aaewg8j61iagl1z AS d
db_sq3rjf5b7p309lq9wuqrh3qhk4gy9fbw-#   ON (f.dt_event_id = d.id);

                QUERY PLAN
------------------------------------------------------------
------------------------------------------------------------
--------------------------------------------------------------------------
 Finalize Aggregate  (cost=1550912.23..1550912.24 rows=1 width=8) (actual
time=13102.458..13102.458 rows=1 loops=1)
   ->  Gather  (cost=1550912.02..1550912.23 rows=2 width=8) (actual
time=13102.374..13102.453 rows=3 loops=1)
         Workers Planned: 2
         Workers Launched: 2
         ->  Partial Aggregate  (cost=1549912.02..1549912.03 rows=1
width=8) (actual time=13098.537..13098.537 rows=1 loops=3)
               ->  Hash Join  (cost=251.51..1489774.90 rows=24054847
width=0) (actual time=3.037..11128.097 rows=19243863 loops=3)
                     Hash Cond: (f.dt_event_id = d.id)
                     ->  Parallel Seq Scan on
f_ticketupdate_aad5jtwal0ayaax f  (cost=0.00..1185867.47 rows=24054847
width=4) (actual time=0.051..3724.233 rows=19243863 loops=3)
                     ->  Hash  (cost=178.45..178.45 rows=5845 width=4)
(actual time=2.806..2.806 rows=5845 loops=3)
                           Buckets: 8192  Batches: 1  Memory Usage: 270kB
                           ->  Seq Scan on dwh_dm_aabv5kk9rxac4lz_
aaonw7nchsan2n1_aad8xhr0m_aaewg8j61iagl1z d  (cost=0.00..178.45 rows=5845
width=4) (actual time=0.015..1.741 rows=5845 loops=3)
 Planning time: 0.463 ms
 Execution time: 13111.044 ms


db_sq3rjf5b7p309lq9wuqrh3qhk4gy9fbw=#  set  max_parallel_workers_per_
gather=0;
SET
db_sq3rjf5b7p309lq9wuqrh3qhk4gy9fbw=# explain analyze SELECT count(*)
  FROM f_ticketupdate_aad5jtwal0ayaax AS f
  INNER JOIN
  dwh_dm_aabv5kk9rxac4lz_aaonw7nchsan2n1_aad8xhr0m_aaewg8j61iagl1z AS d
  ON (f.dt_event_id = d.id);

          QUERY PLAN
------------------------------------------------------------
------------------------------------------------------------
--------------------------------------------------------------
 Aggregate  (cost=2395990.11..2395990.12 rows=1 width=8) (actual
time=37321.462..37321.462 rows=1 loops=1)
   ->  Hash Join  (cost=251.51..2251661.03 rows=57731632 width=0) (actual
time=3.118..31649.524 rows=57731589 loops=1)
         Hash Cond: (f.dt_event_id = d.id)
         ->  Seq Scan on f_ticketupdate_aad5jtwal0ayaax f
(cost=0.00..1522635.32 rows=57731632 width=4) (actual time=0.784..10186.896
rows=57731589 loops=1)
         ->  Hash  (cost=178.45..178.45 rows=5845 width=4) (actual
time=2.316..2.316 rows=5845 loops=1)
               Buckets: 8192  Batches: 1  Memory Usage: 270kB
               ->  Seq Scan on dwh_dm_aabv5kk9rxac4lz_
aaonw7nchsan2n1_aad8xhr0m_aaewg8j61iagl1z d  (cost=0.00..178.45 rows=5845
width=4) (actual time=0.006..1.359 rows=5845 loops=1)
 Planning time: 0.433 ms
 Execution time: 37321.653 ms



>
> regards
>
> --
> Tomas Vondra                  http://www.2ndQuadrant.com
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>

Reply via email to