From: | David Richter <D(dot)Richter(at)DKFZ-heidelberg(dot)de> |
---|---|
To: | sg9(at)sg9(dot)de |
Subject: | Memory exhausted |
Date: | 2001-06-11 12:25:48 |
Message-ID: | 3B24B8CC.15C55147@DKFZ-heidelberg.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
Attachment | Content-Type | Size |
---|---|---|
D.Richter.vcf | text/x-vcard | 468 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Boes | 2001-06-11 13:10:18 | Re: rpt |
Previous Message | Hartwig Jens | 2001-06-11 08:41:15 | RE: GRANT EXECUTE |