query_plan_q2_opt_28_thread

application/octet-stream

Filename: query_plan_q2_opt_28_thread
Type: application/octet-stream
Part: 4
Message: [PATCH] Resolve Parallel Hash Join Performance Issue
                                                                                     QUERY PLAN                                                                                     
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Sort  (cost=1783487.15..1783487.18 rows=13 width=228) (actual time=40637.218..40637.366 rows=2520 loops=1)
   Sort Key: wswscs.d_week_seq
   Sort Method: quicksort  Memory: 295kB
   CTE wswscs
     ->  Finalize GroupAggregate  (cost=1766495.11..1782951.21 rows=10427 width=228) (actual time=40576.614..40601.204 rows=264 loops=1)
           Group Key: date_dim_2.d_week_seq
           ->  Gather Merge  (cost=1766495.11..1773298.88 rows=291956 width=228) (actual time=40576.529..40893.703 rows=7392 loops=1)
                 Workers Planned: 28
                 Workers Launched: 28
                 ->  Sort  (cost=1766494.50..1766517.10 rows=10427 width=228) (actual time=40562.126..40562.153 rows=264 loops=28)
                       Sort Key: date_dim_2.d_week_seq
                       Worker 0:  Sort Method: quicksort  Memory: 161kB
                       Worker 1:  Sort Method: quicksort  Memory: 161kB
                       Worker 2:  Sort Method: quicksort  Memory: 161kB
                       Worker 3:  Sort Method: quicksort  Memory: 161kB
                       Worker 4:  Sort Method: quicksort  Memory: 161kB
                       Worker 5:  Sort Method: quicksort  Memory: 161kB
                       Worker 6:  Sort Method: quicksort  Memory: 161kB
                       Worker 7:  Sort Method: quicksort  Memory: 161kB
                       Worker 8:  Sort Method: quicksort  Memory: 161kB
                       Worker 9:  Sort Method: quicksort  Memory: 161kB
                       Worker 10:  Sort Method: quicksort  Memory: 161kB
                       Worker 11:  Sort Method: quicksort  Memory: 161kB
                       Worker 12:  Sort Method: quicksort  Memory: 161kB
                       Worker 13:  Sort Method: quicksort  Memory: 161kB
                       Worker 14:  Sort Method: quicksort  Memory: 161kB
                       Worker 15:  Sort Method: quicksort  Memory: 161kB
                       Worker 16:  Sort Method: quicksort  Memory: 161kB
                       Worker 17:  Sort Method: quicksort  Memory: 161kB
                       Worker 18:  Sort Method: quicksort  Memory: 161kB
                       Worker 19:  Sort Method: quicksort  Memory: 161kB
                       Worker 20:  Sort Method: quicksort  Memory: 161kB
                       Worker 21:  Sort Method: quicksort  Memory: 161kB
                       Worker 22:  Sort Method: quicksort  Memory: 161kB
                       Worker 23:  Sort Method: quicksort  Memory: 161kB
                       Worker 24:  Sort Method: quicksort  Memory: 161kB
                       Worker 25:  Sort Method: quicksort  Memory: 161kB
                       Worker 26:  Sort Method: quicksort  Memory: 161kB
                       Worker 27:  Sort Method: quicksort  Memory: 161kB
                       ->  Partial HashAggregate  (cost=1765730.99..1765891.16 rows=10427 width=228) (actual time=40561.173..40561.902 rows=264 loops=28)
                             Group Key: date_dim_2.d_week_seq
                             ->  Parallel Hash Join  (cost=205.68..511574.84 rows=38574843 width=18) (actual time=5.550..25040.814 rows=38440623 loops=28)
                                   Hash Cond: (catalog_sales.cs_sold_date_sk = date_dim_2.d_date_sk)
                                   ->  Parallel Append  (cost=0.00..423577.61 rows=38574844 width=10) (actual time=0.266..18027.888 rows=38572470 loops=28)
                                         ->  Parallel Seq Scan on catalog_sales  (cost=0.00..282945.05 rows=25716135 width=10) (actual time=0.424..7462.667 rows=25714823 loops=28)
                                         ->  Parallel Seq Scan on web_sales  (cost=0.00..136990.29 rows=12858709 width=10) (actual time=0.024..16226.163 rows=25715294 loops=14)
                                   ->  Parallel Hash  (cost=33.55..33.55 rows=73049 width=16) (actual time=5.096..5.097 rows=2609 loops=28)
                                         Buckets: 131072  Batches: 1  Memory Usage: 5088kB
                                         ->  Parallel Seq Scan on date_dim date_dim_2  (cost=0.00..33.55 rows=73049 width=16) (actual time=0.034..2.131 rows=2706 loops=27)
   ->  Hash Join  (cost=497.50..535.73 rows=13 width=228) (actual time=40624.720..40636.376 rows=2520 loops=1)
         Hash Cond: (wswscs.d_week_seq = date_dim.d_week_seq)
         ->  CTE Scan on wswscs  (cost=0.00..3.94 rows=10427 width=228) (actual time=40576.617..40576.661 rows=264 loops=1)
         ->  Hash  (cost=497.47..497.47 rows=13 width=232) (actual time=48.039..48.039 rows=2520 loops=1)
               Buckets: 4096 (originally 1024)  Batches: 1 (originally 1)  Memory Usage: 327kB
               ->  Hash Join  (cost=385.48..497.47 rows=13 width=232) (actual time=34.219..46.811 rows=2520 loops=1)
                     Hash Cond: ((wswscs_1.d_week_seq - 53) = date_dim.d_week_seq)
                     ->  Hash Join  (cost=192.74..298.45 rows=362 width=228) (actual time=18.851..31.073 rows=365 loops=1)
                           Hash Cond: (wswscs_1.d_week_seq = date_dim_1.d_week_seq)
                           ->  CTE Scan on wswscs wswscs_1  (cost=0.00..3.94 rows=10427 width=228) (actual time=0.002..24.752 rows=264 loops=1)
                           ->  Hash  (cost=191.89..191.89 rows=362 width=4) (actual time=6.186..6.187 rows=365 loops=1)
                                 Buckets: 1024  Batches: 1  Memory Usage: 21kB
                                 ->  Seq Scan on date_dim date_dim_1  (cost=0.00..191.89 rows=362 width=4) (actual time=3.278..6.145 rows=365 loops=1)
                                       Filter: (d_year = 2001)
                                       Rows Removed by Filter: 72684
                     ->  Hash  (cost=191.89..191.89 rows=362 width=4) (actual time=15.240..15.241 rows=366 loops=1)
                           Buckets: 1024  Batches: 1  Memory Usage: 21kB
                           ->  Seq Scan on date_dim  (cost=0.00..191.89 rows=362 width=4) (actual time=8.063..15.184 rows=366 loops=1)
                                 Filter: (d_year = 2000)
                                 Rows Removed by Filter: 72683
 Planning Time: 7.165 ms
 Execution Time: 40952.552 ms
(71 rows)