Re: Prepared statements and generic plans

From: Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "'Bruce Momjian *EXTERN*'" <bruce(at)momjian(dot)us>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Prepared statements and generic plans
Date: 2016-06-06 07:19:37
Message-ID: A737B7A37273E048B164557ADEF4A58B53859B69@ntex2010i.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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.

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

... assumes *that* each value ...

! 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.

! 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.

! also allows generic plans to accurately compute the selectivity of

Column statistics also *allow* ...

! unique columns. Comparisons on non-uniformly-distributed columns and
! specification of non-existent values affects the average plan cost,
! and hence if and when a generic plan is chosen.

(Disclaimer: I am not a native speaker.)
Other than that, a hearty +1.

Yours,
Laurenz Albe

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2016-06-06 07:30:22 Re: [sqlsmith] Failed assertion in joinrels.c
Previous Message Pavel Stehule 2016-06-06 05:11:17 Re: Relax requirement for INTO with SELECT in pl/pgsql