Not knowing anything about the internals of pg, I don't know how this relates, but in 
theory, 
query plan caching is not just about saving time re-planning queries, it's about 
scalability.
Optimizing queries requires shared locks on the database metadata, which, as I 
understand it
causes contention and serialization, which kills scalability. 

I read this thread from last to first, and I'm not sure if I missed something, but if 
pg isnt
caching plans, then I would say plan caching should be a top priority for future 
enhancements. It
needn't be complex either: if the SQL string is the same, and none of the tables 
involved in the
query have changed (in structure), then re-use the cached plan. Basically, DDL and 
updated
statistics would have to invalidate plans for affected tables. 

Preferably, it should work equally for prepared statements and those not pre-prepared. 
If you're
not using prepare (and bind variables) though, your plan caching down the drain 
anyway...

I don't think that re-optimizing based on values of bind variables is needed. It seems 
like it
could actually be counter-productive and difficult to asses it's impact.

That's the way I see it anyway.

:)

--- Scott Kirkwood <[EMAIL PROTECTED]> wrote:

> I couldn't find anything in the docs or in the mailing list on this,
> but it is something that Oracle appears to do as does MySQL.
> The idea, I believe, is to do a quick (hash) string lookup of the
> query and if it's exactly the same as another query that has been done
> recently to re-use the old parse tree.
> It should save the time of doing the parsing of the SQL and looking up
> the object in the system tables.
> It should probably go through the planner again because values passed
> as parameters may have changed. Although, for extra points it could
> look at the previous query plan as a hint.
> On the surface it looks like an easy enhancement, but what do I know?
> I suppose it would benefit mostly those programs that use a lot of
> PQexecParams() with simple queries where a greater percentage of the
> time is spent parsing the SQL rather than building the execute plan.
> What do you think?
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
> 



                
_______________________________
Do you Yahoo!?
Declare Yourself - Register online to vote today!
http://vote.yahoo.com

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to