Обсуждение: strange behavior on locks
Hi,
I running PostgreSQL 8.0.x with database that does not have foreign keys
and sometimes the following messages appears:
ERROR: deadlock detected
DETAIL: Process 10029 waits for ShareLock on transaction 65272; blocked
by process 32436. Process 32436 waits for ShareLock on transaction 65117; blocked
by process 10029.
I also see (right after executing a ps) that there are lots of messages
"select waiting".
1 - Does it mean that process 10029 owns transaction 65117 and
process 32436 owns transaction 65272 as a transaction acquires an
exclusive lock in its transaction id ?
2 - How is this situation possible ?
What could cause the status ("select waiting") ?
Best regards,
Alfranio
Alfranio Correia Junior <alfranio@lsd.di.uminho.pt> writes:
> What could cause the status ("select waiting") ?
Perhaps you are using SELECT FOR UPDATE?
regards, tom lane
On Fri, Jan 20, 2006 at 11:47:55PM -0500, Tom Lane wrote:
> Alfranio Correia Junior <alfranio@lsd.di.uminho.pt> writes:
> > What could cause the status ("select waiting") ?
>
> Perhaps you are using SELECT FOR UPDATE?
or SELECT func_with_side_effects() ?
-Mike
Perhaps you are using SELECT FOR UPDATE? I am not using "SELECT FOR UPDATES"... Could it have another cause ?
I am executing some stored procedures written in pl/pgsql.... But wouldn't PostgreSQL show information per statement executed by the functions ? >or SELECT func_with_side_effects() ? > > -Mike > >---------------------------(end of broadcast)--------------------------- >TIP 5: don't forget to increase your free space map settings > >
Alfranio Correia Junior <alfranio@lsd.di.uminho.pt> writes:
> I am executing some stored procedures written in pl/pgsql....
> But wouldn't PostgreSQL show information per statement executed by the
> functions ?
No. The command shown in the process status is always just the
outermost operation.
regards, tom lane