Re: understanding pg_locks

Поиск
Список
Период
Сортировка
От Ben Chobot
Тема Re: understanding pg_locks
Дата
Msg-id 07D806F2-E705-46AC-B29B-04CE7F2EA406@silentmedia.com
обсуждение исходный текст
Ответ на Re: understanding pg_locks  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
On May 21, 2011, at 8:53 AM, Tom Lane wrote:

> Ben Chobot <bench@silentmedia.com> writes:
>> We recently had an issue where a misbehaving application was running a long transaction that modified a bunch of
rows,and this was holding up other transactions that wanted to do similar modifications. No surprising there. But what
I'munclear of is how this was showing up in pg_locks. The blocked transactions were all waiting on the transactionid of
thelong-running transaction, not any particular relation or tuple. Why doesn't pg_locks show the actual blockage? 
>
> We don't try to record individual tuple locks in pg_locks (or more
> accurately, in the shared-memory data structure that pg_locks presents a
> view of), because it wouldn't be hard at all for applications to blow
> out the limited amount of space in shared memory if we did.  Instead,
> this type of case is represented as you see, with the waiter(s) blocked
> on the XID of the transaction that's modified and not yet committed the
> row.  The actual holder of the row lock is indicated in the tuple's
> on-disk state.

Ah, that makes sense. But then, when pg_locks does show specific tuple and relation locks, how does this differ from
that?

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

Предыдущее
От: "David Johnston"
Дата:
Сообщение: Syntax Error for "boolean('value')" Type Casting
Следующее
От: Michael Glaesemann
Дата:
Сообщение: Re: counterintuitive behaviour in pl/pgsql