Re: psql connection being reset during function?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: psql connection being reset during function?
Дата
Msg-id 23106.997829006@sss.pgh.pa.us
обсуждение исходный текст
Ответ на psql connection being reset during function?  (Randall Skelton <rhskelto@atm.ox.ac.uk>)
Ответы Re: psql connection being reset during function?
Список pgsql-sql
Randall Skelton <rhskelto@atm.ox.ac.uk> writes:
> problem #2: While this works perfectly for a small table of 10 entries, it
> crashes the database connection when I try to update 311537 rows

In present releases, plpgsql tends to leak a lot of memory intra-call;
you're probably just running out of memory.  (I think we have cleaned up
the leak problems in the CVS-tip code, but that won't help you unless
you're brave enough to run a snapshot version.)  Consider restructuring
your approach so that the plpgsql function just does a single conversion
and is invoked separately at each row:

UPDATE atlas3_path SET sgmt_timestamp = mydatetime(sgmty,sgmtmo,sgmtd,...);

where mydatetime takes five integers and a float and returns a timestamp.
This way, any memory leaked during plpgsql function execution is
reclaimed when the function exits, so it doesn't build up across rows.

This will probably be much faster than your other approach anyway, since
it doesn't require re-finding each row with a fresh UPDATE.  A function
call is a whole lot cheaper than parsing, planning, and executing a new
query.
        regards, tom lane


В списке pgsql-sql по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Deadlocks? What happened to MVCC?
Следующее
От: "Josh Berkus"
Дата:
Сообщение: Re: Deadlocks? What happened to MVCC?