Re: Parallel INSERT (INTO ... SELECT ...)
От | Greg Nancarrow |
---|---|
Тема | Re: Parallel INSERT (INTO ... SELECT ...) |
Дата | |
Msg-id | CAJcOf-dAgtE+drEwj35mO5uhHE=JstLY2-ZH=WaQ+3oULzmHbQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Parallel INSERT (INTO ... SELECT ...) (Amit Kapila <amit.kapila16@gmail.com>) |
Ответы |
Re: Parallel INSERT (INTO ... SELECT ...)
RE: Parallel INSERT (INTO ... SELECT ...) |
Список | pgsql-hackers |
On Wed, Dec 23, 2020 at 1:45 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Wed, Dec 23, 2020 at 7:52 AM Hou, Zhijie <houzj.fnst@cn.fujitsu.com> wrote: > > > > Hi > > > > > > I may be wrong, and if I miss sth in previous mails, please give me some > > > hints. > > > > IMO, serial insertion with underlying parallel SELECT can be > > > > considered for foreign table or temporary table, as the insertions only > > > happened in the leader process. > > > > > > > > > > I don't think we support parallel scan for temporary tables. Can you please > > > try once both of these operations without Insert being involved? If you > > > are able to produce a parallel plan without Insert then we can see why it > > > is not supported with Insert. > > > > Sorry, may be I did not express it clearly, I actually means the case when insert's target(not in select part) tableis temporary. > > And you are right that parallel select is not enabled when temporary table is in select part. > > > > I think Select can be parallel for this case and we should support this case. > So I think we're saying that if the target table is a foreign table or temporary table, it can be regarded as PARALLEL_RESTRICTED, right? i.e. code-wise: /* - * We can't support table modification in parallel-mode if it's a foreign - * table/partition (no FDW API for supporting parallel access) or a + * We can't support table modification in a parallel worker if it's a + * foreign table/partition (no FDW API for supporting parallel access) or a * temporary table. */ if (rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE || RelationUsesLocalBuffers(rel)) { - table_close(rel, lockmode); - context->max_hazard = PROPARALLEL_UNSAFE; - return true; + if (max_parallel_hazard_test(PROPARALLEL_RESTRICTED, context)) + { + table_close(rel, lockmode); + return true; + } } Regards, Greg Nancarrow Fujitsu Australia
В списке pgsql-hackers по дате отправления: