By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
DROP TABLE
CREATE TABLE
INSERT 0 169
DROP TABLE
CREATE TABLE
DO
INSERT 0 800000
INSERT 0 800000
PREPARE
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 8 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 4 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
SET
SET
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 0 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 0 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
| QUERY PLAN |
|---|
| HashAggregate (cost=60020.15..60047.35 rows=2720 width=18) (actual time=928.296..928.351 rows=169 loops=1) |
| Output: store_database.id, max(store_record_p_1.updated_at), count(store_record_p_1.id) |
| Group Key: store_database.id |
| Buffers: shared hit=756 read=9439 dirtied=5101 written=4186 |
| -> Hash Right Join (cost=71.20..45173.33 rows=1979576 width=14) (actual time=0.061..679.852 rows=1600020 loops=1) |
| Output: store_database.id, store_record_p_1.updated_at, store_record_p_1.id |
| Inner Unique: true |
| Hash Cond: (store_record_p_1.database_id = store_database.id) |
| Buffers: shared hit=756 read=9439 dirtied=5101 written=4186 |
| -> Append (cost=0.00..39897.64 rows=1979576 width=14) (actual time=0.014..402.907 rows=1600000 loops=1) |
| Buffers: shared hit=755 read=9439 dirtied=5101 written=4186 |
| -> Seq Scan on public.store_record_p_1 (cost=0.00..6044.64 rows=398864 width=14) (actual time=0.013..62.287 rows=322726 loops=1) |
| Output: store_record_p_1.updated_at, store_record_p_1.id, store_record_p_1.database_id |
| Buffers: shared read=2056 dirtied=1029 written=997 |
| -> Seq Scan on public.store_record_p_31 (cost=0.00..6038.76 rows=398476 width=14) (actual time=0.016..60.702 rows=322324 loops=1) |
| Output: store_record_p_31.updated_at, store_record_p_31.id, store_record_p_31.database_id |
| Buffers: shared read=2054 dirtied=1028 written=996 |
| -> Seq Scan on public.store_record_p_61 (cost=0.00..6027.00 rows=397700 width=14) (actual time=0.016..57.638 rows=321842 loops=1) |
| Output: store_record_p_61.updated_at, store_record_p_61.id, store_record_p_61.database_id |
| Buffers: shared read=2050 dirtied=1026 written=994 |
| -> Seq Scan on public.store_record_p_91 (cost=0.00..6029.94 rows=397894 width=14) (actual time=0.017..57.673 rows=321866 loops=1) |
| Output: store_record_p_91.updated_at, store_record_p_91.id, store_record_p_91.database_id |
| Buffers: shared read=2051 dirtied=1026 written=994 |
| -> Seq Scan on public.store_record_p_121 (cost=0.00..5830.02 rows=384702 width=14) (actual time=0.016..45.838 rows=311242 loops=1) |
| Output: store_record_p_121.updated_at, store_record_p_121.id, store_record_p_121.database_id |
| Buffers: shared hit=755 read=1228 dirtied=992 written=205 |
| -> Seq Scan on public.store_record_p_151 (cost=0.00..29.40 rows=1940 width=14) (actual time=0.012..0.012 rows=0 loops=1) |
| Output: store_record_p_151.updated_at, store_record_p_151.id, store_record_p_151.database_id |
| -> Hash (cost=37.20..37.20 rows=2720 width=2) (actual time=0.039..0.039 rows=169 loops=1) |
| Output: store_database.id |
| Buckets: 4096 Batches: 1 Memory Usage: 38kB |
| Buffers: shared hit=1 |
| -> Seq Scan on public.store_database (cost=0.00..37.20 rows=2720 width=2) (actual time=0.010..0.020 rows=169 loops=1) |
| Output: store_database.id |
| Buffers: shared hit=1 |
| Planning Time: 0.315 ms |
| Execution Time: 928.469 ms |
EXPLAIN
| QUERY PLAN |
|---|
| Hash Left Join (cost=54750.96..54795.31 rows=2720 width=18) (actual time=605.275..605.321 rows=169 loops=1) |
| Output: store_database.id, s.latest_record_updated_at, COALESCE(s.record_count, '0'::bigint) |
| Inner Unique: true |
| Hash Cond: (store_database.id = s.database_id) |
| Buffers: shared hit=792 read=9403 |
| -> Seq Scan on public.store_database (cost=0.00..37.20 rows=2720 width=2) (actual time=0.010..0.022 rows=169 loops=1) |
| Output: store_database.id |
| Buffers: shared hit=1 |
| -> Hash (cost=54748.46..54748.46 rows=200 width=18) (actual time=605.258..605.261 rows=149 loops=1) |
| Output: s.latest_record_updated_at, s.record_count, s.database_id |
| Buckets: 1024 Batches: 1 Memory Usage: 16kB |
| Buffers: shared hit=791 read=9403 |
| -> Subquery Scan on s (cost=54744.46..54748.46 rows=200 width=18) (actual time=605.194..605.232 rows=149 loops=1) |
| Output: s.latest_record_updated_at, s.record_count, s.database_id |
| Buffers: shared hit=791 read=9403 |
| -> HashAggregate (cost=54744.46..54746.46 rows=200 width=18) (actual time=605.193..605.218 rows=149 loops=1) |
| Output: store_record_p_1.database_id, max(store_record_p_1.updated_at), count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=791 read=9403 |
| -> Append (cost=0.00..39897.64 rows=1979576 width=14) (actual time=0.029..349.510 rows=1600000 loops=1) |
| Buffers: shared hit=791 read=9403 |
| -> Seq Scan on public.store_record_p_1 (cost=0.00..6044.64 rows=398864 width=14) (actual time=0.029..47.191 rows=322726 loops=1) |
| Output: store_record_p_1.database_id, store_record_p_1.updated_at, store_record_p_1.id |
| Buffers: shared hit=32 read=2024 |
| -> Seq Scan on public.store_record_p_31 (cost=0.00..6038.76 rows=398476 width=14) (actual time=0.037..46.150 rows=322324 loops=1) |
| Output: store_record_p_31.database_id, store_record_p_31.updated_at, store_record_p_31.id |
| Buffers: shared hit=32 read=2022 |
| -> Seq Scan on public.store_record_p_61 (cost=0.00..6027.00 rows=397700 width=14) (actual time=0.032..48.455 rows=321842 loops=1) |
| Output: store_record_p_61.database_id, store_record_p_61.updated_at, store_record_p_61.id |
| Buffers: shared hit=32 read=2018 |
| -> Seq Scan on public.store_record_p_91 (cost=0.00..6029.94 rows=397894 width=14) (actual time=0.032..47.163 rows=321866 loops=1) |
| Output: store_record_p_91.database_id, store_record_p_91.updated_at, store_record_p_91.id |
| Buffers: shared hit=32 read=2019 |
| -> Seq Scan on public.store_record_p_121 (cost=0.00..5830.02 rows=384702 width=14) (actual time=0.031..41.438 rows=311242 loops=1) |
| Output: store_record_p_121.database_id, store_record_p_121.updated_at, store_record_p_121.id |
| Buffers: shared hit=663 read=1320 |
| -> Seq Scan on public.store_record_p_151 (cost=0.00..29.40 rows=1940 width=14) (actual time=0.008..0.008 rows=0 loops=1) |
| Output: store_record_p_151.database_id, store_record_p_151.updated_at, store_record_p_151.id |
| Planning Time: 0.214 ms |
| Execution Time: 605.372 ms |
EXPLAIN
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 0 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 0 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
SET
SET
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 1 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 1 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
| QUERY PLAN |
|---|
| Hash Left Join (cost=37444.92..37489.27 rows=2720 width=18) (actual time=625.621..625.729 rows=169 loops=1) |
| Output: store_database.id, s.latest_record_updated_at, COALESCE(s.record_count, '0'::bigint) |
| Inner Unique: true |
| Hash Cond: (store_database.id = s.database_id) |
| Buffers: shared hit=717 read=9487 written=8 |
| -> Seq Scan on public.store_database (cost=0.00..37.20 rows=2720 width=2) (actual time=0.009..0.022 rows=169 loops=1) |
| Output: store_database.id |
| Buffers: shared hit=1 |
| -> Hash (cost=37442.42..37442.42 rows=200 width=18) (actual time=625.604..625.668 rows=149 loops=1) |
| Output: s.latest_record_updated_at, s.record_count, s.database_id |
| Buckets: 1024 Batches: 1 Memory Usage: 16kB |
| Buffers: shared hit=716 read=9487 written=8 |
| -> Subquery Scan on s (cost=37413.92..37442.42 rows=200 width=18) (actual time=625.437..625.626 rows=149 loops=1) |
| Output: s.latest_record_updated_at, s.record_count, s.database_id |
| Buffers: shared hit=716 read=9487 written=8 |
| -> Finalize GroupAggregate (cost=37413.92..37440.42 rows=200 width=18) (actual time=625.435..625.610 rows=149 loops=1) |
| Output: store_record_p_1.database_id, max(store_record_p_1.updated_at), count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=716 read=9487 written=8 |
| -> Gather Merge (cost=37413.92..37436.92 rows=200 width=18) (actual time=625.429..625.556 rows=179 loops=1) |
| Output: store_record_p_1.database_id, (PARTIAL max(store_record_p_1.updated_at)), (PARTIAL count(store_record_p_1.id)) |
| Workers Planned: 1 |
| Workers Launched: 1 |
| Buffers: shared hit=716 read=9487 written=8 |
| -> Sort (cost=36413.91..36414.41 rows=200 width=18) (actual time=605.016..605.024 rows=90 loops=2) |
| Output: store_record_p_1.database_id, (PARTIAL max(store_record_p_1.updated_at)), (PARTIAL count(store_record_p_1.id)) |
| Sort Key: store_record_p_1.database_id |
| Sort Method: quicksort Memory: 31kB |
| Worker 0: Sort Method: quicksort Memory: 32kB |
| Buffers: shared hit=716 read=9487 written=8 |
| Worker 0: actual time=587.250..587.258 rows=90 loops=1 |
| Buffers: shared hit=39 read=4783 written=8 |
| -> Partial HashAggregate (cost=36404.26..36406.26 rows=200 width=18) (actual time=604.951..604.967 rows=90 loops=2) |
| Output: store_record_p_1.database_id, PARTIAL max(store_record_p_1.updated_at), PARTIAL count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=707 read=9487 written=8 |
| Worker 0: actual time=587.186..587.201 rows=90 loops=1 |
| Buffers: shared hit=30 read=4783 written=8 |
| -> Parallel Append (cost=0.00..27670.84 rows=1164456 width=14) (actual time=0.022..325.855 rows=800000 loops=2) |
| Buffers: shared hit=707 read=9487 written=8 |
| Worker 0: actual time=0.029..363.865 rows=755421 loops=1 |
| Buffers: shared hit=30 read=4783 written=8 |
| -> Parallel Seq Scan on public.store_record_p_1 (cost=0.00..4402.26 rows=234626 width=14) (actual time=0.028..83.076 rows=322726 loops=1) |
| Output: store_record_p_1.database_id, store_record_p_1.updated_at, store_record_p_1.id |
| Buffers: shared hit=2 read=2054 written=8 |
| Worker 0: actual time=0.028..83.076 rows=322726 loops=1 |
| Buffers: shared hit=2 read=2054 written=8 |
| -> Parallel Seq Scan on public.store_record_p_31 (cost=0.00..4397.98 rows=234398 width=14) (actual time=0.039..101.955 rows=322324 loops=1) |
| Output: store_record_p_31.database_id, store_record_p_31.updated_at, store_record_p_31.id |
| Buffers: shared hit=28 read=2026 |
| Worker 0: actual time=0.039..101.955 rows=322324 loops=1 |
| Buffers: shared hit=28 read=2026 |
| -> Parallel Seq Scan on public.store_record_p_91 (cost=0.00..4391.55 rows=234055 width=14) (actual time=0.033..40.097 rows=160933 loops=2) |
| Output: store_record_p_91.database_id, store_record_p_91.updated_at, store_record_p_91.id |
| Buffers: shared hit=4 read=2047 |
| Worker 0: actual time=0.052..27.721 rows=110371 loops=1 |
| Buffers: shared read=703 |
| -> Parallel Seq Scan on public.store_record_p_61 (cost=0.00..4389.41 rows=233941 width=14) (actual time=0.032..58.263 rows=321842 loops=1) |
| Output: store_record_p_61.database_id, store_record_p_61.updated_at, store_record_p_61.id |
| Buffers: shared hit=58 read=1992 |
| -> Parallel Seq Scan on public.store_record_p_121 (cost=0.00..4245.95 rows=226295 width=14) (actual time=0.014..48.831 rows=311242 loops=1) |
| Output: store_record_p_121.database_id, store_record_p_121.updated_at, store_record_p_121.id |
| Buffers: shared hit=615 read=1368 |
| -> Parallel Seq Scan on public.store_record_p_151 (cost=0.00..21.41 rows=1141 width=14) (actual time=0.001..0.001 rows=0 loops=1) |
| Output: store_record_p_151.database_id, store_record_p_151.updated_at, store_record_p_151.id |
| Planning Time: 0.252 ms |
| Execution Time: 625.786 ms |
EXPLAIN
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 1 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 1 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
SET
SET
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 4 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 4 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
| QUERY PLAN |
|---|
| Hash Left Join (cost=22457.12..22501.47 rows=2720 width=18) (actual time=626.559..626.693 rows=169 loops=1) |
| Output: store_database.id, s.latest_record_updated_at, COALESCE(s.record_count, '0'::bigint) |
| Inner Unique: true |
| Hash Cond: (store_database.id = s.database_id) |
| Buffers: shared hit=689 read=9542 written=3 |
| -> Seq Scan on public.store_database (cost=0.00..37.20 rows=2720 width=2) (actual time=0.010..0.023 rows=169 loops=1) |
| Output: store_database.id |
| Buffers: shared hit=1 |
| -> Hash (cost=22454.62..22454.62 rows=200 width=18) (actual time=626.537..626.626 rows=149 loops=1) |
| Output: s.latest_record_updated_at, s.record_count, s.database_id |
| Buckets: 1024 Batches: 1 Memory Usage: 16kB |
| Buffers: shared hit=688 read=9542 written=3 |
| -> Subquery Scan on s (cost=22348.83..22454.62 rows=200 width=18) (actual time=626.379..626.597 rows=149 loops=1) |
| Output: s.latest_record_updated_at, s.record_count, s.database_id |
| Buffers: shared hit=688 read=9542 written=3 |
| -> Finalize GroupAggregate (cost=22348.83..22452.62 rows=200 width=18) (actual time=626.378..626.582 rows=149 loops=1) |
| Output: store_record_p_1.database_id, max(store_record_p_1.updated_at), count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=688 read=9542 written=3 |
| -> Gather Merge (cost=22348.83..22444.62 rows=800 width=18) (actual time=626.372..626.517 rows=299 loops=1) |
| Output: store_record_p_1.database_id, (PARTIAL max(store_record_p_1.updated_at)), (PARTIAL count(store_record_p_1.id)) |
| Workers Planned: 4 |
| Workers Launched: 4 |
| Buffers: shared hit=688 read=9542 written=3 |
| -> Sort (cost=21348.77..21349.27 rows=200 width=18) (actual time=598.052..598.058 rows=60 loops=5) |
| Output: store_record_p_1.database_id, (PARTIAL max(store_record_p_1.updated_at)), (PARTIAL count(store_record_p_1.id)) |
| Sort Key: store_record_p_1.database_id |
| Sort Method: quicksort Memory: 31kB |
| Worker 0: Sort Method: quicksort Memory: 27kB |
| Worker 1: Sort Method: quicksort Memory: 29kB |
| Worker 2: Sort Method: quicksort Memory: 27kB |
| Worker 3: Sort Method: quicksort Memory: 32kB |
| Buffers: shared hit=688 read=9542 written=3 |
| Worker 0: actual time=586.322..586.325 rows=30 loops=1 |
| Buffers: shared hit=41 read=1934 written=3 |
| Worker 1: actual time=594.116..594.123 rows=60 loops=1 |
| Buffers: shared hit=51 read=2023 |
| Worker 2: actual time=606.348..606.352 rows=30 loops=1 |
| Buffers: shared hit=9 read=1945 |
| Worker 3: actual time=577.392..577.399 rows=90 loops=1 |
| Buffers: shared hit=30 read=1942 |
| -> Partial HashAggregate (cost=21339.13..21341.13 rows=200 width=18) (actual time=598.000..598.012 rows=60 loops=5) |
| Output: store_record_p_1.database_id, PARTIAL max(store_record_p_1.updated_at), PARTIAL count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=652 read=9542 written=3 |
| Worker 0: actual time=586.279..586.286 rows=30 loops=1 |
| Buffers: shared hit=32 read=1934 written=3 |
| Worker 1: actual time=594.050..594.062 rows=60 loops=1 |
| Buffers: shared hit=42 read=2023 |
| Worker 2: actual time=606.304..606.311 rows=30 loops=1 |
| Buffers: shared read=1945 |
| Worker 3: actual time=577.322..577.339 rows=90 loops=1 |
| Buffers: shared hit=21 read=1942 |
| -> Parallel Append (cost=0.00..17627.42 rows=494895 width=14) (actual time=0.033..338.310 rows=320000 loops=5) |
| Buffers: shared hit=652 read=9542 written=3 |
| Worker 0: actual time=0.035..310.114 rows=308662 loops=1 |
| Buffers: shared hit=32 read=1934 written=3 |
| Worker 1: actual time=0.034..300.056 rows=323910 loops=1 |
| Buffers: shared hit=42 read=2023 |
| Worker 2: actual time=0.030..376.087 rows=305365 loops=1 |
| Buffers: shared read=1945 |
| Worker 3: actual time=0.039..384.533 rows=308125 loops=1 |
| Buffers: shared hit=21 read=1942 |
| -> Parallel Seq Scan on public.store_record_p_1 (cost=0.00..3053.16 rows=99716 width=14) (actual time=0.043..134.127 rows=161363 loops=2) |
| Output: store_record_p_1.database_id, store_record_p_1.updated_at, store_record_p_1.id |
| Buffers: shared hit=21 read=2035 |
| Worker 2: actual time=0.029..265.536 rows=305365 loops=1 |
| Buffers: shared read=1945 |
| Worker 3: actual time=0.057..2.717 rows=17361 loops=1 |
| Buffers: shared hit=21 read=90 |
| -> Parallel Seq Scan on public.store_record_p_31 (cost=0.00..3050.19 rows=99619 width=14) (actual time=0.042..94.035 rows=161162 loops=2) |
| Output: store_record_p_31.database_id, store_record_p_31.updated_at, store_record_p_31.id |
| Buffers: shared hit=10 read=2044 |
| Worker 1: actual time=0.033..186.363 rows=311805 loops=1 |
| Buffers: shared hit=10 read=1977 |
| Worker 3: actual time=0.051..1.708 rows=10519 loops=1 |
| Buffers: shared read=67 |
| -> Parallel Seq Scan on public.store_record_p_91 (cost=0.00..3045.74 rows=99474 width=14) (actual time=0.035..64.470 rows=107289 loops=3) |
| Output: store_record_p_91.database_id, store_record_p_91.updated_at, store_record_p_91.id |
| Buffers: shared hit=64 read=1987 written=3 |
| Worker 0: actual time=0.035..166.223 rows=308662 loops=1 |
| Buffers: shared hit=32 read=1934 written=3 |
| Worker 1: actual time=0.059..1.842 rows=12105 loops=1 |
| Buffers: shared hit=32 read=46 |
| -> Parallel Seq Scan on public.store_record_p_61 (cost=0.00..3044.25 rows=99425 width=14) (actual time=0.035..149.279 rows=160921 loops=2) |
| Output: store_record_p_61.database_id, store_record_p_61.updated_at, store_record_p_61.id |
| Buffers: shared hit=64 read=1986 |
| Worker 3: actual time=0.037..248.474 rows=280245 loops=1 |
| Buffers: shared read=1785 |
| -> Parallel Seq Scan on public.store_record_p_121 (cost=0.00..2944.76 rows=96176 width=14) (actual time=0.025..175.528 rows=311242 loops=1) |
| Output: store_record_p_121.database_id, store_record_p_121.updated_at, store_record_p_121.id |
| Buffers: shared hit=493 read=1490 |
| -> Parallel Seq Scan on public.store_record_p_151 (cost=0.00..14.85 rows=485 width=14) (actual time=0.001..0.001 rows=0 loops=1) |
| Output: store_record_p_151.database_id, store_record_p_151.updated_at, store_record_p_151.id |
| Planning Time: 0.248 ms |
| Execution Time: 626.753 ms |
EXPLAIN
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 4 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 4 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
SET
SET
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 6 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 6 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
| QUERY PLAN |
|---|
| Hash Left Join (cost=18798.99..18843.34 rows=2720 width=18) (actual time=694.931..695.456 rows=169 loops=1) |
| Output: store_database.id, s.latest_record_updated_at, COALESCE(s.record_count, '0'::bigint) |
| Inner Unique: true |
| Hash Cond: (store_database.id = s.database_id) |
| Buffers: shared hit=577 read=9672 |
| -> Seq Scan on public.store_database (cost=0.00..37.20 rows=2720 width=2) (actual time=0.014..0.029 rows=169 loops=1) |
| Output: store_database.id |
| Buffers: shared hit=1 |
| -> Hash (cost=18796.49..18796.49 rows=200 width=18) (actual time=694.909..695.367 rows=149 loops=1) |
| Output: s.latest_record_updated_at, s.record_count, s.database_id |
| Buckets: 1024 Batches: 1 Memory Usage: 16kB |
| Buffers: shared hit=576 read=9672 |
| -> Subquery Scan on s (cost=18637.15..18796.49 rows=200 width=18) (actual time=694.549..695.331 rows=149 loops=1) |
| Output: s.latest_record_updated_at, s.record_count, s.database_id |
| Buffers: shared hit=576 read=9672 |
| -> Finalize GroupAggregate (cost=18637.15..18794.49 rows=200 width=18) (actual time=694.548..695.313 rows=149 loops=1) |
| Output: store_record_p_1.database_id, max(store_record_p_1.updated_at), count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=576 read=9672 |
| -> Gather Merge (cost=18637.15..18783.49 rows=1200 width=18) (actual time=694.537..695.141 rows=448 loops=1) |
| Output: store_record_p_1.database_id, (PARTIAL max(store_record_p_1.updated_at)), (PARTIAL count(store_record_p_1.id)) |
| Workers Planned: 6 |
| Workers Launched: 6 |
| Buffers: shared hit=576 read=9672 |
| -> Sort (cost=17637.05..17637.55 rows=200 width=18) (actual time=636.996..637.022 rows=64 loops=7) |
| Output: store_record_p_1.database_id, (PARTIAL max(store_record_p_1.updated_at)), (PARTIAL count(store_record_p_1.id)) |
| Sort Key: store_record_p_1.database_id |
| Sort Method: quicksort Memory: 31kB |
| Worker 0: Sort Method: quicksort Memory: 29kB |
| Worker 1: Sort Method: quicksort Memory: 32kB |
| Worker 2: Sort Method: quicksort Memory: 27kB |
| Worker 3: Sort Method: quicksort Memory: 31kB |
| Worker 4: Sort Method: quicksort Memory: 27kB |
| Worker 5: Sort Method: quicksort Memory: 29kB |
| Buffers: shared hit=576 read=9672 |
| Worker 0: actual time=622.731..622.737 rows=60 loops=1 |
| Buffers: shared hit=89 read=1309 |
| Worker 1: actual time=663.453..663.462 rows=90 loops=1 |
| Buffers: shared hit=33 read=1495 |
| Worker 2: actual time=638.424..638.429 rows=30 loops=1 |
| Buffers: shared hit=9 read=1382 |
| Worker 3: actual time=622.586..622.593 rows=89 loops=1 |
| Buffers: shared hit=142 read=1390 |
| Worker 4: actual time=638.478..638.590 rows=30 loops=1 |
| Buffers: shared hit=9 read=1379 |
| Worker 5: actual time=598.150..598.156 rows=60 loops=1 |
| Buffers: shared hit=90 read=1292 |
| -> Partial HashAggregate (cost=17627.41..17629.41 rows=200 width=18) (actual time=636.924..636.937 rows=64 loops=7) |
| Output: store_record_p_1.database_id, PARTIAL max(store_record_p_1.updated_at), PARTIAL count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=522 read=9672 |
| Worker 0: actual time=622.574..622.587 rows=60 loops=1 |
| Buffers: shared hit=80 read=1309 |
| Worker 1: actual time=663.375..663.393 rows=90 loops=1 |
| Buffers: shared hit=24 read=1495 |
| Worker 2: actual time=638.382..638.389 rows=30 loops=1 |
| Buffers: shared read=1382 |
| Worker 3: actual time=622.515..622.532 rows=89 loops=1 |
| Buffers: shared hit=133 read=1390 |
| Worker 4: actual time=638.432..638.439 rows=30 loops=1 |
| Buffers: shared read=1379 |
| Worker 5: actual time=598.085..598.097 rows=60 loops=1 |
| Buffers: shared hit=81 read=1292 |
| -> Parallel Append (cost=0.00..15152.94 rows=329929 width=14) (actual time=0.042..359.764 rows=228571 loops=7) |
| Buffers: shared hit=522 read=9672 |
| Worker 0: actual time=0.045..302.539 rows=218065 loops=1 |
| Buffers: shared hit=80 read=1309 |
| Worker 1: actual time=0.045..396.815 rows=238483 loops=1 |
| Buffers: shared hit=24 read=1495 |
| Worker 2: actual time=0.045..386.037 rows=216974 loops=1 |
| Buffers: shared read=1382 |
| Worker 3: actual time=0.054..363.591 rows=238957 loops=1 |
| Buffers: shared hit=133 read=1390 |
| Worker 4: actual time=0.043..338.230 rows=216503 loops=1 |
| Buffers: shared read=1379 |
| Worker 5: actual time=0.042..294.437 rows=215495 loops=1 |
| Buffers: shared hit=81 read=1292 |
| -> Parallel Seq Scan on public.store_record_p_1 (cost=0.00..2720.77 rows=66477 width=14) (actual time=0.042..156.236 rows=161363 loops=2) |
| Output: store_record_p_1.database_id, store_record_p_1.updated_at, store_record_p_1.id |
| Buffers: shared hit=81 read=1975 |
| Worker 1: actual time=0.044..222.217 rows=160454 loops=1 |
| Buffers: shared read=1022 |
| Worker 5: actual time=0.041..90.254 rows=162272 loops=1 |
| Buffers: shared hit=81 read=953 |
| -> Parallel Seq Scan on public.store_record_p_31 (cost=0.00..2718.13 rows=66413 width=14) (actual time=0.059..146.464 rows=107441 loops=3) |
| Output: store_record_p_31.database_id, store_record_p_31.updated_at, store_record_p_31.id |
| Buffers: shared hit=64 read=1990 |
| Worker 0: actual time=0.062..3.598 rows=23236 loops=1 |
| Buffers: shared hit=54 read=94 |
| Worker 2: actual time=0.044..303.809 rows=216974 loops=1 |
| Buffers: shared read=1382 |
| Worker 3: actual time=0.070..131.985 rows=82114 loops=1 |
| Buffers: shared hit=10 read=514 |
| -> Parallel Seq Scan on public.store_record_p_91 (cost=0.00..2714.16 rows=66316 width=14) (actual time=0.071..82.018 rows=64373 loops=5) |
| Output: store_record_p_91.database_id, store_record_p_91.updated_at, store_record_p_91.id |
| Buffers: shared hit=40 read=2011 |
| Worker 1: actual time=0.193..5.959 rows=23707 loops=1 |
| Buffers: shared read=151 |
| Worker 3: actual time=0.054..5.339 rows=22765 loops=1 |
| Buffers: shared hit=35 read=110 |
| Worker 4: actual time=0.042..320.986 rows=216503 loops=1 |
| Buffers: shared read=1379 |
| Worker 5: actual time=0.060..76.363 rows=53223 loops=1 |
| Buffers: shared read=339 |
| -> Parallel Seq Scan on public.store_record_p_61 (cost=0.00..2712.83 rows=66283 width=14) (actual time=0.043..145.578 rows=107281 loops=3) |
| Output: store_record_p_61.database_id, store_record_p_61.updated_at, store_record_p_61.id |
| Buffers: shared hit=62 read=1988 |
| Worker 0: actual time=0.044..172.773 rows=194829 loops=1 |
| Buffers: shared hit=26 read=1215 |
| Worker 1: actual time=0.054..83.771 rows=54322 loops=1 |
| Buffers: shared hit=24 read=322 |
| -> Parallel Seq Scan on public.store_record_p_121 (cost=0.00..2624.17 rows=64117 width=14) (actual time=0.037..128.820 rows=155621 loops=2) |
| Output: store_record_p_121.database_id, store_record_p_121.updated_at, store_record_p_121.id |
| Buffers: shared hit=275 read=1708 |
| Worker 3: actual time=0.053..162.925 rows=134078 loops=1 |
| Buffers: shared hit=88 read=766 |
| -> Parallel Seq Scan on public.store_record_p_151 (cost=0.00..13.23 rows=323 width=14) (actual time=0.001..0.001 rows=0 loops=1) |
| Output: store_record_p_151.database_id, store_record_p_151.updated_at, store_record_p_151.id |
| Planning Time: 0.236 ms |
| Execution Time: 695.550 ms |
EXPLAIN
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 6 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 6 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
SET
SET
| name | setting | short_desc |
|---|---|---|
| max_parallel_workers | 8 | Sets the maximum number of parallel workers that can be active at one time. |
| max_parallel_workers_per_gather | 8 | Sets the maximum number of parallel processes per executor node. |
| max_worker_processes | 8 | Maximum number of concurrent worker processes. |
SELECT 3
| QUERY PLAN |
|---|
| Hash Right Join (cost=16852.54..17066.93 rows=2720 width=18) (actual time=667.326..667.672 rows=169 loops=1) |
| Output: store_database.id, (max(store_record_p_1.updated_at)), COALESCE((count(store_record_p_1.id)), '0'::bigint) |
| Inner Unique: true |
| Hash Cond: (store_record_p_1.database_id = store_database.id) |
| Buffers: shared hit=507 read=9751 |
| -> Finalize GroupAggregate (cost=16781.34..16993.20 rows=200 width=18) (actual time=667.269..667.562 rows=149 loops=1) |
| Output: store_record_p_1.database_id, max(store_record_p_1.updated_at), count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=506 read=9751 |
| -> Gather Merge (cost=16781.34..16979.20 rows=1600 width=18) (actual time=667.261..667.474 rows=448 loops=1) |
| Output: store_record_p_1.database_id, (PARTIAL max(store_record_p_1.updated_at)), (PARTIAL count(store_record_p_1.id)) |
| Workers Planned: 8 |
| Workers Launched: 7 |
| Buffers: shared hit=506 read=9751 |
| -> Sort (cost=15781.20..15781.70 rows=200 width=18) (actual time=603.451..603.457 rows=56 loops=8) |
| Output: store_record_p_1.database_id, (PARTIAL max(store_record_p_1.updated_at)), (PARTIAL count(store_record_p_1.id)) |
| Sort Key: store_record_p_1.database_id |
| Sort Method: quicksort Memory: 29kB |
| Worker 0: Sort Method: quicksort Memory: 29kB |
| Worker 1: Sort Method: quicksort Memory: 32kB |
| Worker 2: Sort Method: quicksort Memory: 27kB |
| Worker 3: Sort Method: quicksort Memory: 27kB |
| Worker 4: Sort Method: quicksort Memory: 29kB |
| Worker 5: Sort Method: quicksort Memory: 29kB |
| Worker 6: Sort Method: quicksort Memory: 29kB |
| Buffers: shared hit=506 read=9751 |
| Worker 0: actual time=571.856..571.862 rows=60 loops=1 |
| Buffers: shared hit=61 read=1164 |
| Worker 1: actual time=634.876..634.884 rows=90 loops=1 |
| Buffers: shared hit=90 read=1282 |
| Worker 2: actual time=597.370..597.374 rows=30 loops=1 |
| Buffers: shared hit=9 read=1220 |
| Worker 3: actual time=605.680..605.684 rows=30 loops=1 |
| Buffers: shared hit=58 read=1172 |
| Worker 4: actual time=581.341..581.348 rows=59 loops=1 |
| Buffers: shared hit=76 read=1133 |
| Worker 5: actual time=607.925..607.931 rows=60 loops=1 |
| Buffers: shared hit=84 read=1079 |
| Worker 6: actual time=563.272..563.278 rows=60 loops=1 |
| Buffers: shared hit=113 read=1126 |
| -> Partial HashAggregate (cost=15771.56..15773.56 rows=200 width=18) (actual time=603.376..603.388 rows=56 loops=8) |
| Output: store_record_p_1.database_id, PARTIAL max(store_record_p_1.updated_at), PARTIAL count(store_record_p_1.id) |
| Group Key: store_record_p_1.database_id |
| Buffers: shared hit=443 read=9751 |
| Worker 0: actual time=571.796..571.809 rows=60 loops=1 |
| Buffers: shared hit=52 read=1164 |
| Worker 1: actual time=634.806..634.823 rows=90 loops=1 |
| Buffers: shared hit=81 read=1282 |
| Worker 2: actual time=597.320..597.327 rows=30 loops=1 |
| Buffers: shared read=1220 |
| Worker 3: actual time=605.632..605.639 rows=30 loops=1 |
| Buffers: shared hit=49 read=1172 |
| Worker 4: actual time=581.128..581.141 rows=59 loops=1 |
| Buffers: shared hit=67 read=1133 |
| Worker 5: actual time=607.851..607.864 rows=60 loops=1 |
| Buffers: shared hit=75 read=1079 |
| Worker 6: actual time=563.212..563.224 rows=60 loops=1 |
| Buffers: shared hit=104 read=1126 |
| -> Parallel Append (cost=0.00..13915.70 rows=247447 width=14) (actual time=0.044..340.438 rows=200000 loops=8) |
| Buffers: shared hit=443 read=9751 |
| Worker 0: actual time=0.041..389.476 rows=190912 loops=1 |
| Buffers: shared hit=52 read=1164 |
| Worker 1: actual time=0.059..214.920 rows=213917 loops=1 |
| Buffers: shared hit=81 read=1282 |
| Worker 2: actual time=0.037..327.058 rows=191540 loops=1 |
| Buffers: shared read=1220 |
| Worker 3: actual time=0.041..576.118 rows=191697 loops=1 |
| Buffers: shared hit=49 read=1172 |
| Worker 4: actual time=0.040..206.406 rows=188400 loops=1 |
| Buffers: shared hit=67 read=1133 |
| Worker 5: actual time=0.072..347.924 rows=180883 loops=1 |
| Buffers: shared hit=75 read=1079 |
| Worker 6: actual time=0.041..271.784 rows=193110 loops=1 |
| Buffers: shared hit=104 read=1126 |
| -> Parallel Seq Scan on public.store_record_p_1 (cost=0.00..2554.58 rows=49858 width=14) (actual time=0.049..102.639 rows=161363 loops=2) |
| Output: store_record_p_1.database_id, store_record_p_1.updated_at, store_record_p_1.id |
| Buffers: shared hit=64 read=1992 |
| Worker 0: actual time=0.039..90.473 rows=162181 loops=1 |
| Buffers: shared hit=52 read=981 |
| Worker 1: actual time=0.058..114.805 rows=160545 loops=1 |
| Buffers: shared hit=12 read=1011 |
| -> Parallel Seq Scan on public.store_record_p_31 (cost=0.00..2552.10 rows=49810 width=14) (actual time=0.055..220.744 rows=161162 loops=2) |
| Output: store_record_p_31.database_id, store_record_p_31.updated_at, store_record_p_31.id |
| Buffers: shared hit=144 read=1910 |
| Worker 5: actual time=0.071..264.322 rows=158573 loops=1 |
| Buffers: shared hit=72 read=939 |
| Worker 6: actual time=0.040..177.166 rows=163751 loops=1 |
| Buffers: shared hit=72 read=971 |
| -> Parallel Seq Scan on public.store_record_p_91 (cost=0.00..2548.37 rows=49737 width=14) (actual time=0.057..90.130 rows=64373 loops=5) |
| Output: store_record_p_91.database_id, store_record_p_91.updated_at, store_record_p_91.id |
| Buffers: shared hit=161 read=1890 |
| Worker 1: actual time=0.060..2.955 rows=20567 loops=1 |
| Buffers: shared hit=62 read=69 |
| Worker 3: actual time=0.040..344.287 rows=191697 loops=1 |
| Buffers: shared hit=49 read=1172 |
| Worker 4: actual time=0.070..95.714 rows=57933 loops=1 |
| Buffers: shared hit=15 read=354 |
| Worker 5: actual time=0.060..3.402 rows=22310 loops=1 |
| Buffers: shared hit=3 read=140 |
| Worker 6: actual time=0.056..4.290 rows=29359 loops=1 |
| Buffers: shared hit=32 read=155 |
| -> Parallel Seq Scan on public.store_record_p_61 (cost=0.00..2547.12 rows=49712 width=14) (actual time=0.041..79.407 rows=80460 loops=4) |
| Output: store_record_p_61.database_id, store_record_p_61.updated_at, store_record_p_61.id |
| Buffers: shared hit=8 read=2042 |
| Worker 0: actual time=0.052..66.691 rows=28731 loops=1 |
| Buffers: shared read=183 |
| Worker 1: actual time=0.065..4.975 rows=32805 loops=1 |
| Buffers: shared hit=7 read=202 |
| Worker 2: actual time=0.036..235.856 rows=191540 loops=1 |
| Buffers: shared read=1220 |
| -> Parallel Seq Scan on public.store_record_p_121 (cost=0.00..2463.88 rows=48088 width=14) (actual time=0.030..139.637 rows=155621 loops=2) |
| Output: store_record_p_121.database_id, store_record_p_121.updated_at, store_record_p_121.id |
| Buffers: shared hit=66 read=1917 |
| Worker 4: actual time=0.039..19.545 rows=130467 loops=1 |
| Buffers: shared hit=52 read=779 |
| -> Parallel Seq Scan on public.store_record_p_151 (cost=0.00..12.43 rows=242 width=14) (actual time=0.001..0.001 rows=0 loops=1) |
| Output: store_record_p_151.database_id, store_record_p_151.updated_at, store_record_p_151.id |
| -> Hash (cost=37.20..37.20 rows=2720 width=2) (actual time=0.046..0.047 rows=169 loops=1) |
| Output: store_database.id |
| Buckets: 4096 Batches: 1 Memory Usage: 38kB |
| Buffers: shared hit=1 |
| -> Seq Scan on public.store_database (cost=0.00..37.20 rows=2720 width=2) (actual time=0.016..0.026 rows=169 loops=1) |
| Output: store_database.id |
| Buffers: shared hit=1 |
| Planning Time: 0.250 ms |
| Execution Time: 667.741 ms |
EXPLAIN