Thread: Postgresql7.4.5 running slow on plpgsql function

Postgresql7.4.5 running slow on plpgsql function

From
"Chun Yit(Chronos)"
Date:
>hi, need some help with some experts here.
>currently we have a function that use together with temp table, it calls search result function, everytime
>this function is calling, it will go through some filter before come out as a result.
>now we have some major problem , the first time the function execute, it take about 13 second
>second time the function is execute, it take about 17 second, every time you execute the function
>the time taken will grow about 4 second, ?
>may i know what going on here?
>since we use function with temp table, so every statement that related to temp table will using EXECUTE
>command.
>
>regards
>ivan

Re: Postgresql7.4.5 running slow on plpgsql function

From
Michael Fuhr
Date:
On Thu, Jun 23, 2005 at 05:56:52PM +0800, Chun Yit(Chronos) wrote:
>
> currently we have a function that use together with temp table, it calls
> search result function, everytime this function is calling, it will go
> through some filter before come out as a result.  now we have some major
> problem , the first time the function execute, it take about 13 second
> second time the function is execute, it take about 17 second, every time
> you execute the function the time taken will grow about 4 second, ?  may
> i know what going on here?  since we use function with temp table, so
> every statement that related to temp table will using EXECUTE command.

Could you post the function?  Without knowing what the code is doing
it's impossible to say what's happening.  Is the temporary table
growing on each function call?  Does the function delete records
from the table on each call, leaving a lot of dead tuples?

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

Re: Postgresql7.4.5 running slow on plpgsql function

From
Michael Fuhr
Date:
[Please copy the mailing list on replies so others can contribute
to and learn from the discussion.]

On Wed, Jun 29, 2005 at 12:29:42PM +0800, Chun Yit(Chronos) wrote:
>
> Yes, the function will delete records from the temporary table every time
> on each call.
> if leaving a lot of dead tuples, then how can we solve it?

If the function deletes all records from the temporary table then
you could use TRUNCATE instead of DELETE.  Otherwise you could
VACUUM the table between calls to the function (you can't run VACUUM
inside a function).

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/