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