Re: About checking all dead lock tables

From: Michael Fuhr <mike(at)fuhr(dot)org>
To: Emi Lu <emilu(at)encs(dot)concordia(dot)ca>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: About checking all dead lock tables
Date: 2006-04-07 02:14:58
Message-ID: 20060407021458.GA55452@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, Apr 06, 2006 at 03:36:33PM -0400, Emi Lu wrote:
> How to check whether a table is locked?

You can monitor locks by querying the pg_locks view.

http://www.postgresql.org/docs/8.0/interactive/monitoring-locks.html
http://www.postgresql.org/docs/8.0/interactive/view-pg-locks.html

Only a few operations lock entire tables; for more information see
the Concurrency Control chapter in the documentation.

http://www.postgresql.org/docs/8.0/interactive/mvcc.html

> Is there a way that I can find all deadlocks under postgresql 8.0.1 ?

Are you sure you mean "deadlocks"? Deadlock occurs when transaction
A holds a lock that transaction B wants and transaction B holds a
lock that transaction A wants; PostgreSQL detects this condition
and aborts one of the transactions, allowing the other to continue.
By default this happens after one second (see the deadlock_timeout
setting).

Perhaps you want to see pending or blocked lock attempts, i.e.,
locks that have been requested but are not yet acquired because
another transaction holds a conflicting lock. If that's the case
then look for rows in pg_locks where "granted" is false.

--
Michael Fuhr

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2006-04-07 03:48:21 Re: Debian package for freeradius_postgresql module
Previous Message Jim Nasby 2006-04-07 01:52:14 Re: stored proc vs sql query string