From: | "Zeugswetter Andreas DCP SD" <ZeugswetterA(at)spardat(dot)at> |
---|---|
To: | "Csaba Nagy" <nagy(at)ecircle-ag(dot)com>, "Martijn van Oosterhout" <kleptog(at)svana(dot)org> |
Cc: | "Dann Corbit" <DCorbit(at)connx(dot)com>, "Simon Riggs" <simon(at)2ndquadrant(dot)com>, "Bruce Momjian" <pgman(at)candle(dot)pha(dot)pa(dot)us>, "Rick Gigger" <rick(at)alpinenetworking(dot)com>, "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Christopher Kings-Lynne" <chriskl(at)familyhealth(dot)com(dot)au>, "Jim C(dot) Nasby" <jnasby(at)pervasive(dot)com>, <josh(at)agliodbs(dot)com>, <pgsql-hackers(at)postgresql(dot)org>, "Jaime Casanova" <systemguards(at)gmail(dot)com>, "Peter Eisentraut" <peter_e(at)gmx(dot)net> |
Subject: | Re: MERGE vs REPLACE |
Date: | 2005-11-17 11:34:30 |
Message-ID: | E1539E0ED7043848906A8FF995BDA5799A524D@m0143.s-mxs.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> The problem I try to solve is something along: a bunch of clients try
to update a count, and ONE of them must initialize > the count if it
does not exist... this can't be done with current infrastructure without
race conditions.
The solution without merge but a unique key in other db's is:
update
if no rows updated
insert
if duplicate key
update
if no rows updated goto insert
note, that the counter updates need to be of the form set x = x + ?
where key=y
do you see a potential race condition with this ?
In pg you also need a savepoint before the insert for this to work.
Depending on the ratio of insert vs update we also start with insert
when
the insert succeeds more that 50% (I would use a higher percentage with
pg though):
insert
if duplicate key
update
if no rows updated goto insert
Andreas
From | Date | Subject | |
---|---|---|---|
Next Message | Csaba Nagy | 2005-11-17 11:52:53 | Re: MERGE vs REPLACE |
Previous Message | Zeugswetter Andreas DCP SD | 2005-11-17 09:59:50 | Re: tablespaces and non-empty directories |