Re: [PL/pgSQL] Commit every N rows. Is it possible ?

From: Richard Huxton <dev(at)archonet(dot)com>
To: Jeremiasz Miedzinski <jmiedzinski(at)gmail(dot)com>
Cc: PostgreSQL Mailing List <pgsql-general(at)postgresql(dot)org>
Subject: Re: [PL/pgSQL] Commit every N rows. Is it possible ?
Date: 2006-11-11 10:13:53
Message-ID: 4555A261.8090900@archonet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Jeremiasz Miedzinski wrote:
> 2006/11/9, Richard Huxton <dev(at)archonet(dot)com>:
>
>> It's not clear to me why your function does what it does anyway. I can't
>> see why you wouldn't just do this as standard queries.
>
> As it was mentioned on http://orafaq.com/faqplsql.htm
>
> Contrary to popular believe, one should *COMMIT less frequently* within a
> PL/SQL loop to prevent ORA-1555 (Snapshot too old) errors. The higher the
> frequency of commit, the sooner the extents in the rollback segments
> will be
> cleared for new transactions, causing ORA-1555 errors.
>
> So, I understand that if function/procedure in postgreSQL is treated as one
> transaction I can for example execute 15000 delete queries and nothing
> similar to ORA-1555 shouldn't happen.

I don't believe we have ORA-1555 errors in PG. We don't have the
resources to implement all of Oracle's failure modes :-)

Two areas where you might want to keep an eye on resource usage though:
1. Lots of savepoints (exception handling in plpgsql)
2. Returning large result sets (where the function will assemble the
entire set before returning it). Consider returning a cursor if you want
millions of rows.

--
Richard Huxton
Archonet Ltd

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Richard Huxton 2006-11-11 10:22:43 Re: how & from where to start & admin pgsql on red hat
Previous Message Joshua D. Drake 2006-11-11 06:55:40 Re: wildcard alias