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
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 |
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 |