Re: Deadlocks and transactions

From: Lætitia Avrot <laetitia(dot)avrot(at)gmail(dot)com>
To: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: JORGE MALDONADO <jorgemal1960(at)gmail(dot)com>, pgsql-novice <pgsql-novice(at)postgresql(dot)org>
Subject: Re: Deadlocks and transactions
Date: 2018-03-20 09:01:03
Message-ID: CAB_COdjG9P+BR9U6Ekrwe+t_AqkgDLXY8Mz3bzyaQpvB3EgWgw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Hi Jorge,

Here are the two advices I give developpers to reduce the risk a deadlock
occures :
- Always change(update, delete...) data in the same order
- Keep your transactions short

Cheers,

Lætitia

2018-03-19 23:18 GMT+01:00 David G. Johnston <david(dot)g(dot)johnston(at)gmail(dot)com>:

> On Mon, Mar 19, 2018 at 2:46 PM, JORGE MALDONADO <jorgemal1960(at)gmail(dot)com>
> wrote:
>
>> I have a process that inserts a record in one table and, after that, a
>> record in another table is updated. Because there are 2 DB operations, I
>> decided to perform both of them in a transaction.
>>
>> Can a deadlock take place even if transactions are used?
>>
>
> Its impossible to deadlock without transactions​.
>
> Simplistically, a deadlock happens when there are two processes - one
> holds lock A and wants lock B while the other wants lock A while holding
> lock B.
>
> Your choice to use a transaction here is good but you will have at least
> some risk of deadlock with others parts of the system. Other processes
> running this same exact code, however, should not pose a risk since the
> locking order would be consistent.
>
> David J.
>
>

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Stephen Froehlich 2018-03-20 14:53:56 Replicate a table through a client?
Previous Message David G. Johnston 2018-03-19 22:18:37 Re: Deadlocks and transactions