From: | "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com> |
---|---|
To: | Justin Pryzby <pryzby(at)telsasoft(dot)com> |
Cc: | Greg Nancarrow <gregn4422(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, vignesh C <vignesh21(at)gmail(dot)com>, David Rowley <dgrowleyml(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "tsunakawa(dot)takay(at)fujitsu(dot)com" <tsunakawa(dot)takay(at)fujitsu(dot)com>, "tanghy(dot)fnst(at)fujitsu(dot)com" <tanghy(dot)fnst(at)fujitsu(dot)com>, Amit Langote <amitlangote09(at)gmail(dot)com> |
Subject: | RE: Parallel INSERT (INTO ... SELECT ...) |
Date: | 2021-03-12 04:03:21 |
Message-ID: | OS0PR01MB5716AC748A04A89290B148E3946F9@OS0PR01MB5716.jpnprd01.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On Thu, Mar 11, 2021 at 01:01:42PM +0000, houzj(dot)fnst(at)fujitsu(dot)com wrote:
> > > I guess to have the finer granularity we'd have to go with
> > > enable_parallel_insert, which then would mean possibly having to
> > > later add enable_parallel_update, should parallel update have
> > > similar potential overhead in the parallel-safety checks (which to
> > > me, looks like it could, and parallel delete may not ...)
> > >
> > > It's a shame there is no "set" type for GUC options.
> > > e.g.
> > > enable_parallel_dml='insert,update'
> > > Maybe that's going too far.
>
> Isn't that just GUC_LIST_INPUT ?
> I'm not sure why it'd be going to far ?
>
> The GUC-setting assign hook can parse the enable_parallel_dml_list value set
> by the user, and set an internal int/bits enable_parallel_dml variable with some
> define/enum values like:
>
> GUC_PARALLEL_DML_INSERT 0x01
> GUC_PARALLEL_DML_DELETE 0x02
> GUC_PARALLEL_DML_UPDATE 0x04
>
> The namespace.c assign hook is a good prototype for this. The parsed,
> integer GUC can probably be a static variable in clauses.c.
>
> Then, the planner can check if:
> |commandType == CMD_INSERT &&
> | (enable_parallel_dml & GUC_PARALLEL_DML_INSERT) != 0
> [...]
>
> + this table. When enabled (and provided that
> + <xref linkend="guc-enable-parallel-insert"/> is also
> + <literal>true</literal>),
I think this ideas works, but we still need to consider about the reloption.
After looking into the reloption, I think postgres do not have a list-like type for reloption.
And I think it's better that the guc and reloption is consistent.
Besides, a list type guc option that only support one valid value 'insert' seems a little weird to me(we only support parallel insert for now).
So, I tend to keep the current style of guc option.
If we turn out that we do need same option to restrict update/delete, we can improve this in the future
What do you think ?
Best regards,
houzj
From | Date | Subject | |
---|---|---|---|
Next Message | Dilip Kumar | 2021-03-12 04:07:39 | Re: [HACKERS] Custom compression methods |
Previous Message | Fujii Masao | 2021-03-12 03:39:22 | Re: About to add WAL write/fsync statistics to pg_stat_wal view |