Re: max_parallel_workers can't actually be set?

Поиск
Список
Период
Сортировка
От Ibrar Ahmed
Тема Re: max_parallel_workers can't actually be set?
Дата
Msg-id CALtqXTfuffY_CE34sPHf_P4PQeCvt5bS-B8=LzjUhZEcssz+HQ@mail.gmail.com
обсуждение исходный текст
Ответ на max_parallel_workers can't actually be set?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

On Sat, Aug 17, 2019 at 10:41 PM Tom Lane <tgl@sss.pgh.pa.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@vagrant:~/percona/postgresql$ pg_ctl restart -l log
vagrant@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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Sergei Kornilov
Дата:
Сообщение: Re: max_parallel_workers can't actually be set?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: max_parallel_workers can't actually be set?