From: | 'Bruce Momjian *EXTERN*' <bruce(at)momjian(dot)us> |
---|---|
To: | Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
Cc: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Prepared statements and generic plans |
Date: | 2016-06-06 15:45:13 |
Message-ID: | 20160606154513.GA19170@momjian.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(at)momjian(dot)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 | Content-Type | Size |
---|---|---|
prepare.diff | text/x-diff | 4.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2016-06-06 15:50:43 | Re: Changed SRF in targetlist handling |
Previous Message | Tom Lane | 2016-06-06 15:45:02 | Re: Reviewing freeze map code |