Re: Tracking down a deadlock

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: Tracking down a deadlock
Дата
Msg-id 20090505031723.GJ4476@alvh.no-ip.org
обсуждение исходный текст
Ответ на Re: Tracking down a deadlock  (Bill Moseley <moseley@hank.org>)
Список pgsql-general
Bill Moseley wrote:
> I seemed to have resolved this issue by a:
>
>     LOCK TABLE account IN EXCLUSIVE MODE;
>
> at the very start of the transaction to prevent that transaction
> from running in parallel.
>
> The transaction has quite a few selects and inserts and a few updates.
> I was hoping to not lock at the start of the transaction which will
> effectively serialize that code.
>
> The update that was causing the deadlock was just about the last
> command in the transaction.  Removing that update and the deadlocks
> go away.

I think you should be able to do a SELECT FOR UPDATE with the same WHERE
as the UPDATE as the first thing in your transaction.  That way it is
much less likely to deadlock with itself.  (This assumes that the set of
tuples to update doesn't change, which holds true everytime if your
transaction has isolation level serializable).

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

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

Предыдущее
От: Bill Moseley
Дата:
Сообщение: Re: Tracking down a deadlock
Следующее
От: Glyn Astill
Дата:
Сообщение: bizgres