Re: update/insert, delete/insert efficiency WRT vacuum - Mailing list pgsql-hackers

From Hannu Krosing
Subject Re: update/insert, delete/insert efficiency WRT vacuum
Date
Msg-id 1152053160.3094.1.camel@localhost.localdomain
Whole thread Raw
In response to Re: update/insert, delete/insert efficiency WRT vacuum and  ("Zeugswetter Andreas DCP SD" <ZeugswetterA@spardat.at>)
List pgsql-hackers
Ühel kenal päeval, T, 2006-07-04 kell 14:53, kirjutas Zeugswetter
Andreas DCP SD:
> > > >Is there a difference in PostgreSQL performance between these two 
> > > >different strategies:
> > > >
> > > >
> > > >if(!exec("update foo set bar='blahblah' where name = 'xx'"))
> > > >    exec("insert into foo(name, bar) values('xx','blahblah'"); or
> 
> In pg, this strategy is generally more efficient, since a pk failing
> insert would create
> a tx abort and a heap tuple. (so in pg, I would choose the insert first
> strategy only when 
> the insert succeeds most of the time (say > 95%))
> 
> Note however that the above error handling is not enough, because two
> different sessions
> can still both end up trying the insert (This is true for all db systems
> when using this strategy).

I think the recommended strategy is to first try tu UPDATE, if not found
then INSERT, if primary key violation on insert, then UPDATE


-- 
----------------
Hannu Krosing
Database Architect
Skype Technologies OÜ
Akadeemia tee 21 F, Tallinn, 12618, Estonia

Skype me:  callto:hkrosing
Get Skype for free:  http://www.skype.com




pgsql-hackers by date:

Previous
From: Neil Conway
Date:
Subject: Re: binds only for s,u,i,d?
Next
From: "Victor B. Wagner"
Date:
Subject: Creating custom Win32 installer