Re: INSERT INTO SELECT, Why Parallelism is not selected?

Поиск
Список
Период
Сортировка
От Rushabh Lathia
Тема Re: INSERT INTO SELECT, Why Parallelism is not selected?
Дата
Msg-id CAGPqQf3U8j_QnkhX6+F7RNPrgvnJtF-MKaSgjpMQoA6fkbyJHQ@mail.gmail.com
обсуждение исходный текст
Ответ на INSERT INTO SELECT, Why Parallelism is not selected?  (Dilip Kumar <dilipbalaut@gmail.com>)
Список pgsql-hackers


On Sat, Jul 11, 2020 at 6:07 PM Dilip Kumar <dilipbalaut@gmail.com> wrote:
I have just notice that the parallelism is off even for the select
part of the query mentioned in the $subject.  I see the only reason it
is not getting parallel because we block the parallelism if the query
type is not SELECT.  I don't see any reason for not selecting the
parallelism for this query.  I have quickly hacked the code to enable
the parallelism for this query.  I can see there is a significant
improvement if we can enable the parallelism in this case.  For an
experiment, I have just relaxed a couple of checks, maybe if we think
that it's good to enable the parallelism for this case we can try to
put better checks which are specific for this quey.


+1 for the idea.  For the given example also it shows a good performance
gain and I also don't any reason on restrict the parallel case for INSERT INTO SELECT.
 
No parallel:
postgres[36635]=# explain analyze insert into t2 select * from t where a < 100;
 Insert on t2  (cost=0.00..29742.00 rows=100 width=105) (actual
time=278.300..278.300 rows=0 loops=1)
   ->  Seq Scan on t  (cost=0.00..29742.00 rows=100 width=105) (actual
time=0.061..277.330 rows=99 loops=1)
         Filter: (a < 100)
         Rows Removed by Filter: 999901
 Planning Time: 0.093 ms
 Execution Time: 278.330 ms
(6 rows)

With parallel
 Insert on t2  (cost=1000.00..23460.33 rows=100 width=105) (actual
time=108.410..108.410 rows=0 loops=1)
   ->  Gather  (cost=1000.00..23460.33 rows=100 width=105) (actual
time=0.306..108.973 rows=99 loops=1)
         Workers Planned: 2
         Workers Launched: 2
         ->  Parallel Seq Scan on t  (cost=0.00..22450.33 rows=42
width=105) (actual time=66.396..101.979 rows=33 loops=3)
               Filter: (a < 100)
               Rows Removed by Filter: 333300
 Planning Time: 0.154 ms
 Execution Time: 110.158 ms
(9 rows)

--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com


--
Rushabh Lathia

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

Предыдущее
От: Dilip Kumar
Дата:
Сообщение: Re: INSERT INTO SELECT, Why Parallelism is not selected?
Следующее
От: Masahiro Ikeda
Дата:
Сообщение: Re: Transactions involving multiple postgres foreign servers, take 2