From: | Ibrar Ahmed <ibrar(dot)ahmad(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: max_parallel_workers can't actually be set? |
Date: | 2019-08-17 18:12:45 |
Message-ID: | CALtqXTfuffY_CE34sPHf_P4PQeCvt5bS-B8=LzjUhZEcssz+HQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sat, Aug 17, 2019 at 10:41 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Try this:
> alter system set max_parallel_workers = 20;
> and restart the system.
>
> max_parallel_workers is still 8, according to both SHOW and
> pg_controldata, nor can you launch more than 8 workers.
>
> Even odder, if you just do
>
> regression=# set max_parallel_workers = 200;
> SET
> regression=# show max_parallel_workers;
> max_parallel_workers
> ----------------------
> 200
> (1 row)
>
> which should certainly not happen for a PGC_POSTMASTER parameter.
>
> We seem to have an awful lot of mechanism that's concerned with
> adjustments of max_parallel_workers, for something that apparently
> might as well be a compile-time #define ... so I assume it's supposed
> to be changeable at restart and somebody broke it. But it's not
> working as I'd expect in any branch from 10 onwards.
>
> regards, tom lane
>
>
>
If I understand that correctly it works for me.
postgres=# alter system set max_parallel_workers = 1;
$ pg_ctl restart -l log
$ psql postgres
psql (13devel)
postgres=# explain analyze select * from test where b > 1;
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------
Gather (cost=1000.00..98294.84 rows=1 width=8) (actual
time=1635.959..1636.028 rows=0 loops=1)
Workers Planned: 2
Workers Launched: 1
-> Parallel Seq Scan on test (cost=0.00..97294.74 rows=1 width=8)
(actual time=1632.239..1632.239 rows=0 loops=2)
Filter: (b > 1)
Rows Removed by Filter: 5050000
Planning Time: 0.533 ms
Execution Time: 1636.080 ms
(8 rows)
postgres=# alter system set max_parallel_workers = 2;
ALTER SYSTEM
postgres=# \q
vagrant(at)vagrant:~/percona/postgresql$ pg_ctl restart -l log
vagrant(at)vagrant:~/percona/postgresql$ psql postgres
psql (13devel)
Type "help" for help.
postgres=# explain analyze select * from test where b > 1;
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------
Gather (cost=1000.00..98294.84 rows=1 width=8) (actual
time=1622.210..1622.274 rows=0 loops=1)
Workers Planned: 2
Workers Launched: 2
-> Parallel Seq Scan on test (cost=0.00..97294.74 rows=1 width=8)
(actual time=1616.000..1616.000 rows=0 loops=3)
Filter: (b > 1)
Rows Removed by Filter: 3366667
Planning Time: 0.699 ms
Execution Time: 1622.325 ms
(8 rows)
--
Ibrar Ahmed
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2019-08-17 20:23:44 | Re: max_parallel_workers can't actually be set? |
Previous Message | Sergei Kornilov | 2019-08-17 18:08:07 | Re: max_parallel_workers can't actually be set? |