I had postet a similar question some time ago.
Someone answerded me, in the next PostgreSQL
it would be possible to use nested transactions.
Is is now implemented in version 8.0-beta

You can set a savepoint before the insert that possible fails.
http://developer.postgresql.org/docs/postgres/sql-savepoint.html

Probbaly the savepint also needs a roundtrip between client and server.
If so, this can decrease performance. 
This can be avoided if you put  the "savepoint, insert , rollback to savepoint and 
probably the insert  in a stored procedure.



-----Ursprüngliche Nachricht-----
Von: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Auftrag von Matt Van Mater
Gesendet: Mittwoch, 11. August 2004 20:25
An: [EMAIL PROTECTED]
Betreff: [GENERAL] disabling autocommit


I'm looking to get a little more performance out of my database, and saw in 
the docs a section about disabling autocommit by using the BEGIN and COMMIT 
keywords.

My problem is this: I enforce unique rows for all data, and occasionally 
there is an error where I try to insert a duplicate entry.  I expect to see 
these duplicate entries and depend on the DB to enforce the row uniqueness.  
When I just run the insert statements without the begin and commit keywords 
the insert only fails for that single insert, but If I disable autocommit 
then all the inserts fail because of one error.

As a test I ran about 1000 identical inserts with autocommit on and also 
with it off.  I get roughly a 33% speed increase with the autocommit off, so 
it's definitely a good thing.  The problem is, to parse the insert 
statements and ensure there are no duplicates I feel like I would be losing 
the advantage that disabling autocommit gives me, and simply spending the 
cpu cycles somewhere else.

Is there a way for me to say 'only commit the successful commands and ignore 
the unsuccessful ones'?  I know that's the point behind using this type of 
transaction/rollback statement but I was curious if there was a way I could 
fix it.

Matt

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! 
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to