Memory exhausted
От | David Richter |
---|---|
Тема | Memory exhausted |
Дата | |
Msg-id | 3B24B8CC.15C55147@DKFZ-heidelberg.de обсуждение исходный текст |
Ответы |
Re: Memory exhausted
|
Список | pgsql-sql |
Hello! I used a self written funtion in plpgsql with a database of 2 Gigabyte size. My server has 384 Megabytes of RAM. So I got this error by calling the following function: psql:restructure.sql:139: FATAL 1: Memory exhausted in AllocSetAlloc() pqReadData() -- backend closed the channel unexpectedly. This probably means the backend terminated abnormally before or while processing the request. psql:restructure.sql:139: connection to server was lost In the memory usage program Its shown that the function needs all the memory. The function fetches all XXX rows of a table and writes a value to another table CREATE FUNCTION series_image () RETURNS integer AS ' DECLARE psr_rec record; i integer := 0; BEGIN FOR psr_rec IN SELECT * FROM relseries_image000 LOOP UPDATE image SET seriesoid = psr_rec.parentoid WHERE chilioid = psr_rec.childoid; i := i + 1; END LOOP; IF NOT FOUND THEN RETURN -1; ELSE RETURN i; END IF; END; ' LANGUAGE 'plpgsql'; What could I optimize in this function above? I tried the Select statement in the psql command and it has taken 20 minutes. I estimate that there are more than 400000 rows in the table. Then it breakes , the announcment appears: malloc: Resource temporarily unavailable and psql is crashed. Should I change the postmaster parameters? actually they are : ./postmaster -i -S -D/usr/local/pgsql/data -B 256 -o -e -o -F What can I do? Thanks in advance for any advice David
Вложения
В списке pgsql-sql по дате отправления: