On 08/12/15 05:27, David G. Johnston wrote:
On Mon, Dec 7, 2015 at 8:35 AM, Jim Nasby <jim.na...@bluetreble.com <mailto:jim.na...@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



--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to