Re: No hash join across partitioned tables? - Mailing list pgsql-performance
From | Kris Jurka |
---|---|
Subject | Re: No hash join across partitioned tables? |
Date | |
Msg-id | 49E8B6DC.5040508@ejurka.com Whole thread Raw |
In response to | Re: No hash join across partitioned tables? (Tom Lane <tgl@sss.pgh.pa.us>) |
List | pgsql-performance |
Tom Lane wrote: > Kris Jurka <books@ejurka.com> writes: >> The hash join takes less than twenty seconds, the other two joins I >> killed after five minutes. I can try to collect explain analyze results >> later today if you'd like. > Attached are the explain analyze results. The analyze part hits the hash join worst of all, so I've also included the timings without analyzing. Method Time (ms) Time w/Analyze (ms) nestloop 304853 319060 merge 514517 683757 hash 18957 143731 Kris Jurka Aggregate (cost=116546928.75..116546928.76 rows=1 width=0) (actual time=143731.602..143731.604 rows=1 loops=1) -> Hash Join (cost=1470.48..108802907.84 rows=3097608361 width=0) (actual time=308.015..143724.055 rows=2437 loops=1) Hash Cond: ((l.vin)::text = (i.vin)::text) -> Append (cost=0.00..332098.75 rows=18450775 width=18) (actual time=0.069..99984.899 rows=18449996 loops=1) -> Seq Scan on liens l (cost=0.00..14.00 rows=400 width=21) (actual time=0.003..0.003 rows=0 loops=1) -> Seq Scan on liens_s1 l (cost=0.00..18633.44 rows=917444 width=18) (actual time=0.060..1828.740 rows=917444loops=1) -> Seq Scan on liens_s2 l (cost=0.00..20.92 rows=1192 width=18) (actual time=0.010..2.274 rows=1192 loops=1) -> Seq Scan on liens_s3 l (cost=0.00..53793.79 rows=2934179 width=18) (actual time=0.054..5777.782 rows=2934179loops=1) -> Seq Scan on liens_s4 l (cost=0.00..21069.39 rows=1214139 width=18) (actual time=0.065..2413.429 rows=1214139loops=1) -> Seq Scan on liens_s5 l (cost=0.00..29966.37 rows=1726837 width=18) (actual time=0.046..3394.974 rows=1726837loops=1) -> Seq Scan on liens_s6 l (cost=0.00..10587.18 rows=462918 width=18) (actual time=0.053..936.379 rows=462918loops=1) -> Seq Scan on liens_s7 l (cost=0.00..14.00 rows=400 width=21) (actual time=0.003..0.003 rows=0 loops=1) -> Seq Scan on liens_s8 l (cost=0.00..86004.68 rows=4956168 width=18) (actual time=0.045..9729.965 rows=4956182loops=1) -> Seq Scan on liens_s9 l (cost=0.00..320.29 rows=18429 width=18) (actual time=0.010..34.880 rows=18429loops=1) -> Seq Scan on liens_s10 l (cost=0.00..18398.16 rows=951016 width=18) (actual time=0.055..1889.948 rows=951016loops=1) -> Seq Scan on liens_s11 l (cost=0.00..9956.22 rows=543022 width=18) (actual time=0.055..1070.156 rows=543022loops=1) -> Seq Scan on liens_s12 l (cost=0.00..78813.85 rows=4541785 width=18) (actual time=0.012..9431.035 rows=4541792loops=1) -> Seq Scan on liens_s13 l (cost=0.00..4506.46 rows=182846 width=18) (actual time=0.049..374.788 rows=182846loops=1) -> Hash (cost=1050.77..1050.77 rows=33577 width=18) (actual time=256.374..256.374 rows=33297 loops=1) -> Append (cost=0.00..1050.77 rows=33577 width=18) (actual time=0.019..188.152 rows=33297 loops=1) -> Seq Scan on impounds i (cost=0.00..11.40 rows=140 width=21) (actual time=0.002..0.002 rows=0 loops=1) -> Seq Scan on impounds_s1 i (cost=0.00..11.40 rows=140 width=21) (actual time=0.002..0.002 rows=0loops=1) -> Seq Scan on impounds_s2 i (cost=0.00..913.87 rows=29587 width=18) (actual time=0.008..60.728 rows=29587loops=1) -> Seq Scan on impounds_s3 i (cost=0.00..18.14 rows=414 width=18) (actual time=0.009..0.848 rows=414loops=1) -> Seq Scan on impounds_s4 i (cost=0.00..95.96 rows=3296 width=18) (actual time=0.012..6.894 rows=3296loops=1) Total runtime: 143731.788 ms (26 rows) QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------- Aggregate (cost=57241210.61..57241210.62 rows=1 width=0) (actual time=683467.350..683467.352 rows=1 loops=1) -> Merge Join (cost=2940810.41..49497189.70 rows=3097608361 width=0) (actual time=434026.342..683460.545 rows=2437 loops=1) Merge Cond: ((l.vin)::text = (i.vin)::text) -> Sort (cost=2937235.46..2983362.40 rows=18450775 width=18) (actual time=433519.957..637389.755 rows=18449961loops=1) Sort Key: l.vin Sort Method: external merge Disk: 504728kB -> Append (cost=0.00..332098.75 rows=18450775 width=18) (actual time=14.764..102905.170 rows=18449996 loops=1) -> Seq Scan on liens l (cost=0.00..14.00 rows=400 width=21) (actual time=0.003..0.003 rows=0 loops=1) -> Seq Scan on liens_s1 l (cost=0.00..18633.44 rows=917444 width=18) (actual time=14.755..2167.668rows=917444 loops=1) -> Seq Scan on liens_s2 l (cost=0.00..20.92 rows=1192 width=18) (actual time=0.012..2.304 rows=1192loops=1) -> Seq Scan on liens_s3 l (cost=0.00..53793.79 rows=2934179 width=18) (actual time=8.751..6311.537rows=2934179 loops=1) -> Seq Scan on liens_s4 l (cost=0.00..21069.39 rows=1214139 width=18) (actual time=0.039..2412.847rows=1214139 loops=1) -> Seq Scan on liens_s5 l (cost=0.00..29966.37 rows=1726837 width=18) (actual time=0.038..3805.214rows=1726837 loops=1) -> Seq Scan on liens_s6 l (cost=0.00..10587.18 rows=462918 width=18) (actual time=0.037..990.027 rows=462918loops=1) -> Seq Scan on liens_s7 l (cost=0.00..14.00 rows=400 width=21) (actual time=0.003..0.003 rows=0 loops=1) -> Seq Scan on liens_s8 l (cost=0.00..86004.68 rows=4956168 width=18) (actual time=0.037..9992.213rows=4956182 loops=1) -> Seq Scan on liens_s9 l (cost=0.00..320.29 rows=18429 width=18) (actual time=0.012..35.403 rows=18429loops=1) -> Seq Scan on liens_s10 l (cost=0.00..18398.16 rows=951016 width=18) (actual time=0.039..2078.649rows=951016 loops=1) -> Seq Scan on liens_s11 l (cost=0.00..9956.22 rows=543022 width=18) (actual time=0.039..1254.598rows=543022 loops=1) -> Seq Scan on liens_s12 l (cost=0.00..78813.85 rows=4541785 width=18) (actual time=0.044..10506.463rows=4541792 loops=1) -> Seq Scan on liens_s13 l (cost=0.00..4506.46 rows=182846 width=18) (actual time=7.880..591.710 rows=182846loops=1) -> Sort (cost=3574.95..3658.89 rows=33577 width=18) (actual time=494.662..559.550 rows=33312 loops=1) Sort Key: i.vin Sort Method: quicksort Memory: 4138kB -> Append (cost=0.00..1050.77 rows=33577 width=18) (actual time=0.037..178.794 rows=33297 loops=1) -> Seq Scan on impounds i (cost=0.00..11.40 rows=140 width=21) (actual time=0.005..0.005 rows=0 loops=1) -> Seq Scan on impounds_s1 i (cost=0.00..11.40 rows=140 width=21) (actual time=0.002..0.002 rows=0loops=1) -> Seq Scan on impounds_s2 i (cost=0.00..913.87 rows=29587 width=18) (actual time=0.022..59.502 rows=29587loops=1) -> Seq Scan on impounds_s3 i (cost=0.00..18.14 rows=414 width=18) (actual time=0.009..0.829 rows=414loops=1) -> Seq Scan on impounds_s4 i (cost=0.00..95.96 rows=3296 width=18) (actual time=0.011..6.646 rows=3296loops=1) Total runtime: 683757.901 ms (31 rows) Aggregate (cost=11171206.17..11171206.18 rows=1 width=0) (actual time=319059.9 81..319059.983 rows=1 loops=1) -> Nested Loop (cost=0.27..3427185.27 rows=3097608361 width=0) (actual time =2918.842..319051.903 rows=2437 loops=1) Join Filter: ((i.vin)::text = (l.vin)::text) -> Append (cost=0.00..1050.77 rows=33577 width=18) (actual time=0.034 ..259.582 rows=33297 loops=1) -> Seq Scan on impounds i (cost=0.00..11.40 rows=140 width=21) (actual time=0.004..0.004 rows=0 loops=1) -> Seq Scan on impounds_s1 i (cost=0.00..11.40 rows=140 width=21) (actual time=0.002..0.002 rows=0 loops=1) -> Seq Scan on impounds_s2 i (cost=0.00..913.87 rows=29587 width=18) (actual time=0.021..111.905 rows=29587loops=1) -> Seq Scan on impounds_s3 i (cost=0.00..18.14 rows=414 width=18) (actual time=4.488..6.009 rows=414 loops=1) -> Seq Scan on impounds_s4 i (cost=0.00..95.96 rows=3296 width=18) (actual time=8.542..27.109 rows=3296loops=1) -> Append (cost=0.27..101.85 rows=15 width=19) (actual time=9.048..9.563 rows=0 loops=33297) -> Bitmap Heap Scan on liens l (cost=0.27..5.60 rows=2 width=21) (actual time=0.007..0.007 rows=0 loops=33297) Recheck Cond: ((l.vin)::text = (i.vin)::text) -> Bitmap Index Scan on liens_pk (cost=0.00..0.27 rows=2 width=0) (actual time=0.003..0.003 rows=0loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s1_pk on liens_s1 l (cost=0.00..7.60 rows=1 width=18) (actual time=1.109..1.109rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using liens_s2_pk on liens_s2 l (cost=0.00..7.32 rows=1 width=18) (actual time=0.008..0.008rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s3_pk on liens_s3 l (cost=0.00..8.07 rows=1 width=18) (actual time=0.921..0.921rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s4_pk on liens_s4 l (cost=0.00..7.67 rows=1 width=18) (actual time=1.334..1.334rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s5_pk on liens_s5 l (cost=0.00..7.79 rows=1 width=18) (actual time=1.800..1.800rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s6_pk on liens_s6 l (cost=0.00..7.49 rows=1 width=18) (actual time=0.604..0.604rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using liens_s7_pk on liens_s7 l (cost=0.00..3.47 rows=1 width=21) (actual time=0.003..0.003rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s8_pk on liens_s8 l (cost=0.00..8.53 rows=1 width=18) (actual time=1.141..1.141rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s9_pk on liens_s9 l (cost=0.00..7.33 rows=1 width=18) (actual time=0.037..0.037rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s10_pk on liens_s10 l (cost=0.00..7.61 rows=1 width=18) (actual time=1.162..1.162rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s11_pk on liens_s11 l (cost=0.00..7.51 rows=1 width=18) (actual time=0.099..0.099rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s12_pk on liens_s12 l (cost=0.00..8.43 rows=1 width=18) (actual time=1.073..1.074rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) -> Index Scan using newliens_s13_pk on liens_s13 l (cost=0.00..7.43 rows=1 width=18) (actual time=0.238..0.238rows=0 loops=33297) Index Cond: ((l.vin)::text = (i.vin)::text) Total runtime: 319060.547 ms (41 rows)
pgsql-performance by date: