Re: Discussion on missing optimizations

Laurenz Albe <laurenz.albe@cybertec.at>

From: Laurenz Albe <laurenz.albe@cybertec.at>
To: Robert Haas <robertmhaas@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>, Adam Brusselback <adambrusselback@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2017-10-12T07:22:27Z
Lists: pgsql-hackers
Robert Haas wrote:
> One trick that some system use is avoid replanning as much as we do
> by, for example, saving plans in a shared cache and reusing them even
> in other sessions.  That's hard to do in our architecture because the
> controlling GUCs can be different in every session and there's not
> even any explicit labeling of which GUCs control planner behavior. But
> if you had it, then extra planning cycles would be, perhaps, more
> tolerable.

From my experience with Oracle I would say that that is a can of worms.

Perhaps it really brings the performance benefits they claim, but
a) there have been a number of bugs where the wrong plan got used
   (you have to keep several plans for the same statement around,
   since - as you say - different sessions have different environments)
b) it is a frequent problem that this shared memory area grows
   too large if the application does not use prepared statements
   but dynamic SQL with varying constants.

Yours,
Laurenz Albe


Commits

  1. Reduce "X = X" to "X IS NOT NULL", if it's easy to do so.