Thread: finding the other statement causing a sharelock
I get DETAIL: Process 24749 waits for ShareLock on transaction 113443492; blocked by process 25199. Process 25199 waits for ShareLock on transaction 113442820; blocked by process 24749. I would like to know both statements that caused the sharelock problem. This is a long running transaction. I know one of the statement. I'd like to know the other. How? -- Ivan Sergio Borgonovo http://www.webthatworks.it
Ivan Sergio Borgonovo <mail@webthatworks.it> writes: > I get > DETAIL: Process 24749 waits for ShareLock on transaction 113443492; > blocked by process 25199. Process 25199 waits for ShareLock on > transaction 113442820; blocked by process 24749. > I would like to know both statements that caused the sharelock > problem. Recent versions of PG record both (or all) statements involved in a deadlock in the postmaster log. regards, tom lane
On Mon, 08 Nov 2010 15:45:12 -0500 Tom Lane <tgl@sss.pgh.pa.us> wrote: > Ivan Sergio Borgonovo <mail@webthatworks.it> writes: > > I get > > DETAIL: Process 24749 waits for ShareLock on transaction > > 113443492; blocked by process 25199. Process 25199 waits for > > ShareLock on transaction 113442820; blocked by process 24749. > > > I would like to know both statements that caused the sharelock > > problem. > Recent versions of PG record both (or all) statements involved in a > deadlock in the postmaster log. What about not so recent 8.3.9? thanks -- Ivan Sergio Borgonovo http://www.webthatworks.it
On Mon, Nov 8, 2010 at 2:18 PM, Ivan Sergio Borgonovo <mail@webthatworks.it> wrote: > On Mon, 08 Nov 2010 15:45:12 -0500 > Tom Lane <tgl@sss.pgh.pa.us> wrote: > >> Ivan Sergio Borgonovo <mail@webthatworks.it> writes: >> > I get >> > DETAIL: Process 24749 waits for ShareLock on transaction >> > 113443492; blocked by process 25199. Process 25199 waits for >> > ShareLock on transaction 113442820; blocked by process 24749. >> >> > I would like to know both statements that caused the sharelock >> > problem. > >> Recent versions of PG record both (or all) statements involved in a >> deadlock in the postmaster log. > Don't know how much it helps here, but this page: http://wiki.postgresql.org/wiki/Lock_Monitoring is priceless when you're having issues midday with a lock that won't go away.
On Mon, 8 Nov 2010 14:22:16 -0700 Scott Marlowe <scott.marlowe@gmail.com> wrote: > Don't know how much it helps here, but this page: > http://wiki.postgresql.org/wiki/Lock_Monitoring > is priceless when you're having issues midday with a lock that > won't go away. I was thinking to reinvent the wheel and write something similar. But I was already thinking how am I supposed to "intercept" a lock that is caused by a long transaction that I know and a process happening at some unknown time? I've some strong suspect... and I'd like to exit earlier from a function if a process is running but I'm not really sure how to add a semaphore... -- Ivan Sergio Borgonovo http://www.webthatworks.it
Ivan Sergio Borgonovo <mail@webthatworks.it> writes: > I've some strong suspect... and I'd like to exit earlier from a > function if a process is running but I'm not really sure how to add a > semaphore... Maybe pg_try_advisory_lock() would help you there? http://www.postgresql.org/docs/8.3/static/explicit-locking.html#ADVISORY-LOCKS http://www.postgresql.org/docs/8.3/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS Regards, -- Dimitri Fontaine http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support