We are using Postgers-XL based on PostgreSQL 10.5 on RHEL7. We have an extreme case of one query which running in 4 hour 45 mins and 33 seconds with Nested Loops Join vs 2.5 seconds when we disable enable_nestloop. The query is given below.
I would be happy to share more information if required. -- Plan A - NL enabled: -- Limit (cost=78922.65..87812.39 rows=1 width=584) (actual time=53476.337..17133622.713 rows=353 loops=1) Buffers: shared hit=181422132, temp read=50909275 written=50909273 -> GroupAggregate (cost=78922.65..87812.39 rows=1 width=584) (actual time=53476.334..17133622.035 rows=353 loops=1) Group Key: sh."row", sh.col Buffers: shared hit=181422132, temp read=50909275 written=50909273 -> Nested Loop (cost=78922.65..87812.20 rows=1 width=536) (actual time=51768.638..17132518.985 rows=51562 loops=1) Join Filter: ((se.account_id = pe.account_id) AND (se.peril_id = pe.peril_id)) Rows Removed by Join Filter: 2403022205 Buffers: shared hit=181422132, temp read=50909275 written=50909273 -> GroupAggregate (cost=72432.96..72433.14 rows=1 width=368) (actual time=51513.891..52815.004 rows=51567 loops=1) Group Key: sh."row", sh.col, se.portfolio_id, se.peril_id, se.account_id Buffers: shared hit=22235530, temp read=7878 written=7876 -> Sort (cost=72432.96..72432.96 rows=1 width=324) (actual time=51513.864..51790.397 rows=111621 loops=1) Sort Key: sh."row", sh.col, se.peril_id, se.account_id Sort Method: external merge Disk: 36152kB Buffers: shared hit=22235530, temp read=7878 written=7876 -> Nested Loop Semi Join (cost=34681.42..72432.95 rows=1 width=324) (actual time=238.805..51120.362 rows=111621 loops=1) Join Filter: (a.account_id = se1.account_id) Buffers: shared hit=22235530, temp read=3359 written=3353 -> Gather (cost=34681.00..72431.43 rows=1 width=348) (actual time=238.757..1085.453 rows=111621 loops=1) Workers Planned: 2 Workers Launched: 2 Buffers: shared hit=421611, temp read=3359 written=3353 -> Nested Loop (cost=33681.00..71431.33 rows=1 width=348) (actual time=359.006..926.303 rows=37207 loops=3) Join Filter: (se.account_id = a.account_id) Buffers: shared hit=421611, temp read=3359 written=3353 -> Hash Join (cost=33680.71..71298.94 rows=395 width=300) (actual time=358.953..656.923 rows=36828 loops=3) Hash Cond: ((se.account_id = sh.account_id) AND (se.site_id = sh.site_id)) Buffers: shared hit=89803, temp read=3359 written=3353 -> Parallel Bitmap Heap Scan on site_exposure_p1000013 se (cost=2447.82..32716.49 rows=15266 width=276) (actual time=4.980..165.908 rows=36639 loops=3) Recheck Cond: (shape && '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry) Filter: ((portfolio_id = 1000013) AND _st_intersects(shape, '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry)) Heap Blocks: exact=2704 Buffers: shared hit=16522 -> Bitmap Index Scan on site_exposure_p1000013_shape_idx (cost=0.00..2438.66 rows=109917 width=0) (actual time=12.154..12.155 rows=109917 loops=1) Index Cond: (shape && '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry) Buffers: shared hit=797 -> Hash (cost=28094.08..28094.08 rows=143721 width=28) (actual time=352.223..352.224 rows=144202 loops=3) Buckets: 262144 Batches: 2 Memory Usage: 6556kB Buffers: shared hit=73223, temp written=1371 -> Bitmap Heap Scan on site_hex_bin_p1000013 sh (cost=1904.27..28094.08 rows=143721 width=28) (actual time=15.842..252.047 rows=144202 loops=3) Recheck Cond: (lod = 5) Filter: (portfolio_id = 1000013) Heap Blocks: exact=24008 Buffers: shared hit=73223 -> Bitmap Index Scan on site_hex_bin_p1000013_lod_idx (cost=0.00..1868.34 rows=143721 width=0) (actual time=12.614..12.615 rows=144202 loops=3) Index Cond: (lod = 5) Buffers: shared hit=1199 -> Index Scan using account_p1000013_account_id_idx on account_p1000013 a (cost=0.29..0.32 rows=1 width=52) (actual time=0.003..0.005 rows=1 loops=110485) Index Cond: (account_id = sh.account_id) Filter: (portfolio_id = 1000013) Buffers: shared hit=331808 -> Index Scan using site_exposure_p1000013_account_id_idx on site_exposure_p1000013 se1 (cost=0.42..1.50 rows=1 width=16) (actual time=0.446..0.446 rows=1 loops=111621) Index Cond: (account_id = sh.account_id) Filter: ((shape && '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry)
AND (portfolio_id = 1000013) AND (sh.site_id = site_id) AND _st_intersects(shape, '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry)) Rows Removed by Filter: 1504 Buffers: shared hit=21813919 -> Finalize GroupAggregate (cost=6489.69..14214.02 rows=46601 width=200) (actual time=98.190..313.002 rows=46601 loops=51567) Group Key: pe.peril_id, pe.portfolio_id, pe.account_id Buffers: shared hit=122339289, temp read=50900403 written=50900403 -> Gather Merge (cost=6489.69..11897.85 rows=28464 width=200) (actual time=98.174..229.739 rows=46604 loops=51567) Workers Planned: 1 Workers Launched: 1 Buffers: shared hit=122340016, temp read=50900403 written=50900403 -> Partial GroupAggregate (cost=5489.68..7695.64 rows=28464 width=200) (actual time=62.035..118.505 rows=23302 loops=103134) Group Key: pe.peril_id, pe.portfolio_id, pe.account_id Buffers: shared hit=159187329, temp read=50901397 written=50901397 -> Sort (cost=5489.68..5560.84 rows=28464 width=200) (actual time=61.104..75.010 rows=24194 loops=103134) Sort Key: pe.peril_id, pe.account_id Sort Method: external sort Disk: 7896kB Buffers: shared hit=159187329, temp read=50901397 written=50901397 -> Parallel Seq Scan on policy_exposure_p1000013 pe (cost=0.00..3383.79 rows=28464 width=200) (actual time=0.021..25.688 rows=24194 loops=103134) Filter: (portfolio_id = 1000013) Buffers: shared hit=156144876 Planning time: 6.990 ms Execution time: 17133656.822 ms (76 rows) Time: 17133669.350 ms (04:45:33.669) Plan B - NL disabled: -- Limit (cost=121789.91..121790.10 rows=1 width=584) (actual time=2561.184..2695.610 rows=353 loops=1) Buffers: shared hit=60394, temp read=17144 written=17147 -> GroupAggregate (cost=121789.91..121790.10 rows=1 width=584) (actual time=2561.181..2695.345 rows=353 loops=1) Group Key: s.sh_row, s.sh_col Buffers: shared hit=60394, temp read=17144 written=17147 -> Sort (cost=121789.91..121789.92 rows=1 width=536) (actual time=2561.103..2599.304 rows=51562 loops=1) Sort Key: s.sh_row, s.sh_col Sort Method: external merge Disk: 27304kB Buffers: shared hit=60394, temp read=17144 written=17147 -> Merge Join (cost=113366.54..121789.90 rows=1 width=536) (actual time=2105.426..2442.405 rows=51562 loops=1) Merge Cond: ((pe.peril_id = s.se_peril_id) AND (pe.account_id = s.se_account_id)) Buffers: shared hit=60394, temp read=13731 written=13731 -> Finalize GroupAggregate (cost=6489.69..14214.02 rows=46601 width=200) (actual time=84.618..292.694 rows=46601 loops=1) Group Key: pe.peril_id, pe.portfolio_id, pe.account_id Buffers: shared hit=2165 -> Gather Merge (cost=6489.69..11897.85 rows=28464 width=200) (actual time=84.602..207.781 rows=46605 loops=1) Workers Planned: 1 Workers Launched: 1 Buffers: shared hit=3087 -> Partial GroupAggregate (cost=5489.68..7695.64 rows=28464 width=200) (actual time=59.728..115.224 rows=23302 loops=2) Group Key: pe.peril_id, pe.portfolio_id, pe.account_id Buffers: shared hit=3087 -> Sort (cost=5489.68..5560.84 rows=28464 width=200) (actual time=59.706..69.961 rows=24194 loops=2) Sort Key: pe.peril_id, pe.account_id Sort Method: quicksort Memory: 10018kB Buffers: shared hit=3087 -> Parallel Seq Scan on policy_exposure_p1000013 pe (cost=0.00..3383.79 rows=28464 width=200) (actual time=0.026..37.045 rows=24194 loops=2) Filter: (portfolio_id = 1000013) Buffers: shared hit=3028 -> Sort (cost=106876.85..106876.85 rows=1 width=368) (actual time=2020.792..2058.011 rows=51567 loops=1) Sort Key: s.se_peril_id, s.se_account_id Sort Method: external sort Disk: 19040kB Buffers: shared hit=58229, temp read=13731 written=13731 -> Subquery Scan on s (cost=106876.64..106876.84 rows=1 width=368) (actual time=1430.482..1792.003 rows=51567 loops=1) Buffers: shared hit=58229, temp read=8972 written=8971 -> GroupAggregate (cost=106876.64..106876.83 rows=1 width=368) (actual time=1430.479..1747.379 rows=51567 loops=1) Group Key: sh."row", sh.col, se.portfolio_id, se.peril_id, se.account_id Buffers: shared hit=58229, temp read=8972 written=8971 -> Sort (cost=106876.64..106876.65 rows=1 width=324) (actual time=1430.423..1521.130 rows=111621 loops=1) Sort Key: sh."row", sh.col, se.peril_id, se.account_id Sort Method: external merge Disk: 36160kB Buffers: shared hit=58229, temp read=8972 written=8971 -> Hash Join (cost=79603.30..106876.63 rows=1 width=324) (actual time=622.718..1190.648 rows=111621 loops=1) Hash Cond: (se.account_id = a.account_id) Buffers: shared hit=58229, temp read=4452 written=4446 -> Hash Join (cost=77643.95..104913.92 rows=225 width=300) (actual time=565.028..965.081 rows=110485 loops=1) Hash Cond: ((sh.account_id = se.account_id) AND (sh.site_id = se.site_id)) Buffers: shared hit=57449, temp read=4452 written=4446 -> Bitmap Heap Scan on site_hex_bin_p1000013 sh (cost=1904.27..28094.08 rows=143721 width=28) (actual time=12.622..133.905 rows=144202 loops=1) Recheck Cond: (lod = 5) Filter: (portfolio_id = 1000013) Heap Blocks: exact=24008 Buffers: shared hit=24405 -> Bitmap Index Scan on site_hex_bin_p1000013_lod_idx (cost=0.00..1868.34 rows=143721 width=0) (actual time=9.465..9.465 rows=144202 loops=1) Index Cond: (lod = 5) Buffers: shared hit=397 -> Hash (cost=75609.24..75609.24 rows=8696 width=292) (actual time=552.359..552.359 rows=109917 loops=1) Buckets: 32768 (originally 16384) Batches: 4 (originally 1) Memory Usage: 9985kB Buffers: shared hit=33044, temp written=3115 -> Hash Semi Join (cost=41377.79..75609.24 rows=8696 width=292) (actual time=204.061..423.813 rows=109917 loops=1) Hash Cond: ((se.account_id = se1.account_id) AND (se.site_id = se1.site_id)) Buffers: shared hit=33044 -> Gather (cost=3447.82..37380.39 rows=36639 width=276) (actual time=16.265..104.149 rows=109917 loops=1) Workers Planned: 2 Workers Launched: 2 Buffers: shared hit=16522 -> Parallel Bitmap Heap Scan on site_exposure_p1000013 se (cost=2447.82..32716.49 rows=15266 width=276) (actual time=5.159..127.909 rows=36639 loops=3) Recheck Cond: (shape && '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry) Filter: ((portfolio_id = 1000013) AND _st_intersects(shape, '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry)) Heap Blocks: exact=87 Buffers: shared hit=16522 -> Bitmap Index Scan on site_exposure_p1000013_shape_idx (cost=0.00..2438.66 rows=109917 width=0) (actual time=12.634..12.635 rows=109917 loops=1) Index Cond: (shape && '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry) Buffers: shared hit=797 -> Hash (cost=37380.39..37380.39 rows=36639 width=16) (actual time=187.691..187.691 rows=109917 loops=1) Buckets: 131072 (originally 65536) Batches: 1 (originally 1) Memory Usage: 6177kB Buffers: shared hit=16522 -> Gather (cost=3447.82..37380.39 rows=36639 width=16) (actual time=15.788..121.575 rows=109917 loops=1) Workers Planned: 2 Workers Launched: 2 Buffers: shared hit=16522 -> Parallel Bitmap Heap Scan on site_exposure_p1000013 se1 (cost=2447.82..32716.49 rows=15266 width=16) (actual time=5.064..93.457 rows=36639 loops=3) Recheck Cond: (shape && '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry) Filter: ((portfolio_id = 1000013) AND _st_intersects(shape, '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry)) Heap Blocks: exact=3255 Buffers: shared hit=16522 -> Bitmap Index Scan on site_exposure_p1000013_shape_idx (cost=0.00..2438.66 rows=109917 width=0) (actual time=12.356..12.356 rows=109917 loops=1) Index Cond: (shape && '0103000020E610000001000000050000006EDDDBF40F285FC03D719130D9532340BEE0DBF4BFCE53C03D719130D9532340BEE0DBF4BFCE53C0B2C127D5E26B42406EDDDBF40F285FC0B2C127D5E26B42406EDDDBF40F285FC03D719130D9532340'::geometry) Buffers: shared hit=797 -> Hash (cost=1369.68..1369.68 rows=47174 width=52) (actual time=57.599..57.600 rows=47174 loops=1) Buckets: 65536 Batches: 1 Memory Usage: 4378kB Buffers: shared hit=780 -> Seq Scan on account_p1000013 a (cost=0.00..1369.68 rows=47174 width=52) (actual time=0.017..29.184 rows=47174 loops=1) Filter: (portfolio_id = 1000013) Buffers: shared hit=780 Planning time: 8.005 ms Execution time: 2721.799 ms (97 rows) Time: 2739.492 ms (00:02.739) Regards, Virendra This message is intended only for the use of the addressee and may contain information that is PRIVILEGED AND CONFIDENTIAL. If you are not the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please erase all copies of the message and its attachments and notify the sender immediately. Thank you. |