Re: Prepared statements and generic plans - Mailing list pgsql-hackers

From 'Bruce Momjian *EXTERN*'
Subject Re: Prepared statements and generic plans
Date
Msg-id 20160606154513.GA19170@momjian.us
Whole thread Raw
In response to Re: Prepared statements and generic plans  (Albe Laurenz <laurenz.albe@wien.gv.at>)
Responses Re: Prepared statements and generic plans
Re: Prepared statements and generic plans
List pgsql-hackers
On Mon, Jun  6, 2016 at 07:19:37AM +0000, Albe Laurenz wrote:
> Bruce Momjian wrote:
> > OK, updated version attached.  I added "potential" to the first
> > paragraph, and added "estimated cost" to the later part, fixed the
> > "cheaper than", and clarified that we add the plan time cost to the
> > non-generic plan, which is how it can be cheaper than the generic plan.
> > I also moved the "Once a generic plan is chosen" line.
> >
> > Yeah, that's a lot of changes, but they all improved the text.  Thanks.
>
> Thanks for working on this.
>
> !    Prepared statements can optionally use generic plans rather than
> !    re-planning with each set of supplied <command>EXECUTE</command> values.
> !    This occurs immediately for prepared statements with no parameters;
> !    otherwise it occurs only after five or more executions produce estimated
> !    plan costs, with planning overhead added, that are, on average, more
> !    expensive than the generic plan cost.
>
> The following might be easier to understand:
> ... after five or more executions produce plans whose estimated cost average
> (including planning overhead) is more expensive than the generic plan cost estimate.

Agreed.

> !    A generic plan assumes each value supplied to <command>EXECUTE</command>
>
> ... assumes *that* each value ...

Agreed.

> !    is one of the column's distinct values and that column values are
> !    uniformly distributed.  For example, if statistics records three
>
> Shouldn't it be "record"?
> The documentation treats "statistics" as a plural word throughout.

Agreed, not sure how I missed that.

> !    distinct column values, a generic plan assumes a column equality
> !    comparison will match 33% of processed rows.  Column statistics
>
> ... assumes *that* a column equality comparison will match 33% of *the* processed rows.

Uh, that seems overly wordy.  I think the rule is that if the sentence
makes sense without the words, you should not use them, but it is
clearly a judgement call in this case.  Do you agree?

> !    also allows generic plans to accurately compute the selectivity of
>
> Column statistics also *allow* ...

Yep.

Updated patch attached.

One more thing --- there was talk of moving some of this into chapter
66, but as someone already mentioned, there are no subsections there
because it is a dedicated topic:

    66. How the Planner Uses Statistics.

I am not inclined to add a prepare-only section to that chapter.  On the
other hand, the issues described apply to PREPARE and to protocol-level
prepare, so having it in PREPARE also seems illogical.  However, I am
inclined to leave it in PREPARE until we are ready to move all of this
to chapter 66.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

+ As you are, so once was I. As I am, so you will be. +
+                     Ancient Roman grave inscription +

Attachment

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Reviewing freeze map code
Next
From: Tom Lane
Date:
Subject: Re: Changed SRF in targetlist handling