Re: Best practices: MERGE

From: Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)au>
To: David Fetter <david(at)fetter(dot)org>
Cc: PG Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Best practices: MERGE
Date: 2005-03-08 03:45:19
Message-ID: 422D1FCF.4080103@familyhealth.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches

> The "correct" solution, as far as I can tell, is to acquire a LOCK on
> the table IN SHARE MODE at the beginning of the transaction, but this
> has (at least for many applications) unacceptable performance
> characteristics. Accepting that there is a slight risk of a race
> condition when *not* locking the table at the beginning of the
> transaction, what procedure minimizes this risk and recovers well from
> said race condition, should it occur?

IN SHARE MODE is not enough, you can get deadlocks. You require IN
SHARE ROW EXCLUSIVE MODE. other than that, it's a sucky solution
because it breaks concurrency. In pgsql 8, you can do it using pl/pgsql
exception handling.

Chris

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David Fetter 2005-03-08 04:08:10 Re: Best practices: MERGE
Previous Message David Fetter 2005-03-08 03:34:49 Best practices: MERGE

Browse pgsql-patches by date

  From Date Subject
Next Message David Fetter 2005-03-08 04:08:10 Re: Best practices: MERGE
Previous Message David Fetter 2005-03-08 03:34:49 Best practices: MERGE