Re: Should we add GUCs to allow partition pruning to be disabled?

From: Justin Pryzby <pryzby(at)telsasoft(dot)com>
To: David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>
Cc: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>, Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Should we add GUCs to allow partition pruning to be disabled?
Date: 2018-05-07 03:34:53
Message-ID: 20180507033453.GB5192@telsasoft.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Apr 26, 2018 at 07:29:37PM +1200, David Rowley wrote:
> On 25 April 2018 at 09:59, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> wrote:
> > Amit Langote wrote:
> >> Although the config.sgml coverage of the new capabilities seems pretty
> >> good, some may find their being mentioned in 5.10 Table Partitioning
> >> helpful. Or if we don't want to hijack 5.10.4, maybe create a 5.10.5.
> >
> > Can you (or someone) describe what would that section contain?
>
> I've drafted and attached a patch of how I think this should look.
> Likely it will need some tweaking, but it is probably a good starting
> point for discussion.

diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml
index 34da0d8d57..89735b4804 100644
--- a/doc/src/sgml/ddl.sgml
+++ b/doc/src/sgml/ddl.sgml

+ <para>
+ Unlike constraint exclusion, partition pruning can be performed much more
+ quickly as it does not have to scan each individual partition's metadata
quickly COMMA

But actually I suggest:
Partition pruning is much more efficient than constraint exclusion, since
pruning avoids scanning each partition's metadata...

+ Partition Pruning is also more powerful than constraint exclusion as
+ partition pruning is not something that is performed only during the
remove "something that is" ?
Or just merge into the next sentence.
Note: Amit and David commented on this previously.

+ planning of a given query. In certain cases, partition pruning may also
+ be performed during execution of the query as well. This allows pruning
"also" is redundant with "as well"

+ to be performed using values which are unknown during query planning, for
could say "are not yet known"

+ The partition pruning which is performed during execution is done so at
+ either one or both of the following times:
remove "either" ?

+ During initialization of the query plan. Partition pruning can be
+ initialization phase of execution. If partition pruning can be
+ performed here then there is the added benefit of not having to
here COMMA

+ initialize partitions which are pruned. Partitions which are pruned
+ during this stage will not show up in the query's

+ During actual execution of the query plan. Partition pruning may also
Remove "actual" ?

+ be performed here to remove partitions using values which are only known
+ during actual query execution. This includes values from subqueries and

+ values from execution time parameters such as ones from parameterized
execution-time?
s/ones/those/

+ partition column or expression changes. In order to determine if
+ partitions were pruned at this stage requires careful inspection of the
+ <literal>nloops</literal> property in the
+ <command>EXPLAIN ANALYZE</command> output.
s/In order to determine/Determining/

+ <para>
+ Currently, partition pruning of partitions during the planning of an
s/partition //1 (just "pruning of partitions")

+ <command>UPDATE</command> or <command>DELETE</command> command are
s/are/is/

+ internally implemented using the constraint exclusion method. Only
remove "internally"?

+ <command>SELECT</command> uses the faster partition pruning method. Also
Also COMMA

+ partition pruning performed during execution is only done so for the
Remove "so".

Justin

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jonathan S. Katz 2018-05-07 04:16:29 Re: Draft release notes are up
Previous Message Tom Lane 2018-05-07 02:47:13 Re: Having query cache in core