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: