From: | Amit Langote <amitlangote09(at)gmail(dot)com> |
---|---|
To: | David Rowley <dgrowleyml(at)gmail(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com |
Subject: | Re: ModifyTable overheads in generic plans |
Date: | 2020-06-29 09:04:18 |
Message-ID: | CA+HiwqHeBh4i0iFSZzP+KDox3XZe02bYAZq4AuOzMXUq+TaHLQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Jun 29, 2020 at 10:39 AM David Rowley <dgrowleyml(at)gmail(dot)com> wrote:
>
> On Sat, 27 Jun 2020 at 00:36, Amit Langote <amitlangote09(at)gmail(dot)com> wrote:
> > 2. ExecCheckRTPerms(): checks permissions of *all* partitions before
> > executing the plan tree, but maybe it's okay to check only the ones
> > that will be accessed
>
> I don't think it needs to be quite as complex as that.
> expand_single_inheritance_child will set the
> RangeTblEntry.requiredPerms to 0, so we never need to check
> permissions on a partition. The overhead of permission checking when
> there are many partitions is just down to the fact that
> ExecCheckRTPerms() loops over the entire rangetable and calls
> ExecCheckRTEPerms for each one. ExecCheckRTEPerms() does have very
> little work to do when requiredPerms is 0, but the loop itself and the
> function call overhead show up when you remove the other bottlenecks.
I had forgotten that we set requiredPerms to 0 for the inheritance child tables.
> I have a patch somewhere that just had the planner add the RTindexes
> with a non-zero requiredPerms and set that in the plan so that
> ExecCheckRTPerms could just look at the ones that actually needed
> something checked. There's a slight disadvantage there that for
> queries to non-partitioned tables that we need to build a Bitmapset
> that has all items from the rangetable. That's likely a small
> overhead, but not free, so perhaps there is a better way.
I can't think of anything for this that doesn't involve having one
more list of RTEs or bitmapset of RT indexes in PlannedStmt.
--
Amit Langote
EnterpriseDB: http://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Julien Rouhaud | 2020-06-29 09:17:14 | Re: track_planning causing performance regression |
Previous Message | Fujii Masao | 2020-06-29 08:55:28 | Re: track_planning causing performance regression |