Re: Transaction lock granting order

Поиск
Список
Период
Сортировка
От Joshua Ma
Тема Re: Transaction lock granting order
Дата
Msg-id CAG9XPV=Xtdiat4=aiFfkKAS+6Fd4AQNY_hP1CC8KtsLEtb5fpQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Transaction lock granting order  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Thanks a bunch Tom, appreciate the quick response.

On Mon, Dec 5, 2016 at 12:33 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Joshua Ma <josh@benchling.com> writes:
> Can someone point me to documentation on (or confirm) this detail on
> Postgres locking?

> - Transaction X starts and acquires a lock on a table T
> - Transaction Y starts and attempts to acquire a conflicting lock on T - it
> is now blocked
> - Transaction Z starts and also attempts to acquire a conflicting lock on T
> - it is now blocked

> Is txn Y guaranteed to be the first txn to proceed once X finishes?

In isolation, arrival order is respected, but there are cases where it
would not be.  In particular, lock queues can get reordered to fix
"soft deadlock" situations where the only alternative to letting Z go
ahead of Y is to raise a deadlock error.  This would require there being
other locks in the system besides the ones you mention, of course.
(And it may well require more than three transactions --- I don't remember
at the moment what are the user-visible cases where this happens.)

You can find probably more than you want to know about deadlock handling
in src/backend/storage/lmgr/README.

                        regards, tom lane

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Transaction lock granting order
Следующее
От: Israel Brewster
Дата:
Сообщение: WAL File archive time