Thread: function result cache for pl/pgsql
I was thinking about pl/pgsql and comparing it with pl/sql function result cache, featured in Oracle 11g - see http://www.oracle.com/technology/oramag/oracle/07-sep/o57plsql.html Is it possible to get pl/pgsql function result cache functionality into PostgreSQL? I am not that familiar with the pgsql internals to hack this only by myself. Best, Pete _________________________________________________________________ Help yourself to FREE treats served up daily at the Messenger Café. Stop by today. http://www.cafemessenger.com/info/info_sweetstuff2.html?ocid=TXT_TAGLM_OctWLtagline
2007/10/24, Peter Manchev <pmanchev@hotmail.com>: > > I was thinking about pl/pgsql and comparing it with pl/sql function result cache, > featured in Oracle 11g - see > > http://www.oracle.com/technology/oramag/oracle/07-sep/o57plsql.html > > Is it possible to get pl/pgsql function result cache functionality into PostgreSQL? plpgsql doesn't allow access to shared memory now. You can use plper for caching some resuts. I am not sure if result cache is generally accaptable technique, but I thing, I can write similar functionality for orafce if you need anything hurry, use plperl http://www.postgresql.org/docs/8.2/interactive/plperl-global.html and $_SHARED array. Regards Pavel Stehule
IMHO, pl/perl;s global hash %_SHARED does not provide the same performance. With pl/perl with some data cached we will get getter performance, that is sure, but the body of the function will be evaluatedanyway, so there will be some miliseconds lost. On the other hand, the body of a function with in-memory result cache clause will not be evaluated if the supplied arguments'result is already cached, and the function will just instantly return the result - which is the timesaver. So, I would prefer to have such function clause implemented in pgsql, maybe as add-on. Best, Peter _________________________________________________________________ Peek-a-boo FREE Tricks & Treats for You! http://www.reallivemoms.com?ocid=TXT_TAGHM&loc=us