Re: MERGE vs REPLACE

Поиск
Список
Период
Сортировка
От Csaba Nagy
Тема Re: MERGE vs REPLACE
Дата
Msg-id 1132228373.10890.313.camel@coppola.muc.ecircle.de
обсуждение исходный текст
Ответ на Re: MERGE vs REPLACE  ("Zeugswetter Andreas DCP SD" <ZeugswetterA@spardat.at>)
Ответы Re: MERGE vs REPLACE  (Martijn van Oosterhout <kleptog@svana.org>)
Список pgsql-hackers
Yes, these algorithms are clear to me, but they don't work for batch
updates in postgres without savepoints before each row insert/update,
which is not good for performance (not to mention on older postgres
versions without savepoint support it won't work at all). If there is a
way of no race condition, no performance penalty, that would be
something new and useful. I just guess the MERGE would provide that.

Cheers,
Csaba.

On Thu, 2005-11-17 at 12:34, Zeugswetter Andreas DCP SD wrote:
> > 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



В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Zeugswetter Andreas DCP SD"
Дата:
Сообщение: Re: MERGE vs REPLACE
Следующее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: MERGE vs REPLACE