Skip site navigation (1) Skip section navigation (2)

Re: automatically detecting long timed locks

From: "Scott Marlowe" <scott(dot)marlowe(at)gmail(dot)com>
To: "Tino Schwarze" <postgresql(at)tisc(dot)de>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: automatically detecting long timed locks
Date: 2007-09-12 22:02:56
Message-ID: dcc563d10709121502o50221f23m4cd1b420b649b429@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-admin
On 9/12/07, Tino Schwarze <postgresql(at)tisc(dot)de> wrote:
> Hi there,
>
> is there an easy way to detect locks which are held for a very long
> time? We've got some problems with a database here where a lock is held
> for 1 or 2 hours though the operation should be very quick. A lot of
> other processes are then waiting for the lock to become available.
>
> We would like to query for "lock on table xyz being held for more than
> 60 seconds" or the other way around "query has been waiting for lock on
> table xyz for more than 60 seconds".
>
> Of course, we get log entries like "LOG:  duration: 8544285.789 ms
> execute <unnamed>: lock table "xyz" in exclusive mode", but this is
> AFTER the lock got acquired. We'd like to notice if lock acquisition
> takes very long so we can look around and figure out what's wrong.
>
> How can we achieve this?

I use something like this:

select *, age(transactionid) from pg_locks where locktype='transactionid';

to see which transactions are old.  the higher the age the older the
transaction is.

In response to

Responses

pgsql-admin by date

Next:From: Alvaro HerreraDate: 2007-09-12 22:48:21
Subject: Re: Telecom(Colombia) - Error postgresql
Previous:From: Tino SchwarzeDate: 2007-09-12 20:46:57
Subject: automatically detecting long timed locks

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group