Re: [PATCH] Equivalence Class Filters - Mailing list pgsql-hackers

From Gavin Flower
Subject Re: [PATCH] Equivalence Class Filters
Date
Msg-id 5665DD84.7000902@archidevsys.co.nz
Whole thread Raw
In response to Re: [PATCH] Equivalence Class Filters  ("David G. Johnston" <david.g.johnston@gmail.com>)
Responses Re: [PATCH] Equivalence Class Filters
List pgsql-hackers
On 08/12/15 05:27, David G. Johnston wrote:
> On Mon, Dec 7, 2015 at 8:35 AM, Jim Nasby <Jim.Nasby@bluetreble.com 
> <mailto:Jim.Nasby@bluetreble.com>>wrote:
>
>     On 12/6/15 10:38 AM, Tom Lane wrote:
>
>         I said "in most cases".  You can find example cases to support
>         almost any
>         weird planner optimization no matter how expensive and
>         single-purpose;
>         but that is the wrong way to think about it.  What you have to
>         think about
>         is average cases, and in particular, not putting a drag on
>         planning time
>         in cases where no benefit ensues.  We're not committing any
>         patches that
>         give one uncommon case an 1100X speedup by penalizing every
>         other query 10%,
>         or even 1%; especially not when there may be other ways to fix it.
>
>
>     This is a problem that seriously hurts Postgres in data
>     warehousing applications. We can't keep ignoring optimizations
>     that provide even as little as 10% execution improvements for 10x
>     worse planner performance, because in a warehouse it's next to
>     impossible for planning time to matter.
>
>     Obviously it'd be great if there was a fast, easy way to figure
>     out whether a query would be expensive enough to go the whole 9
>     yards on planning it but at this point I suspect a simple GUC
>     would be a big improvement.
>
>
> Something like "enable_equivalencefilters" but that defaults to false 
> unlike every one existing "enable_*" GUC?
>
> ​It would be a lot more user-friendly to have something along the 
> lines of "planner_mode (text)" with labels like "star, transactional, 
> bulk_load, etc..." because I suspect there are other things we'd want 
> to add if we start identifying queries by their type/usage and 
> optimize accordingly.  Having the knobs available is necessary but 
> putting on a façade would make the user more straight-forward for the 
> common cases.
>
> David J.
>
How about:

planning_time_base 10  # Default effort, may be increased or decreased 
as required - must be at least 1
planning_time_XXXX  0  # By default, planner makes no (or minimal) 
effort to optimise for feature XXXX

So for some people, adjusting planning_time_base may be sufficient - but 
for more specialised cases, people can tell the planner to consider 
expending more effort.


Cheers,
Gavin




pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: [PATCH] Equivalence Class Filters
Next
From: Evgeniy Shishkin
Date:
Subject: Re: [PATCH] Equivalence Class Filters