hi,
i got the following error-message:
ERROR: deadlock detected
DETAIL: Process 32618 waits for ShareLock on transaction 1137032034;
blocked by process 16136.
Process 16136 waits for ShareLock on transaction 1137045910;
blocked by process 32618.
(postgres 7.4 here)
i checked the mailing-list-archives, and by such problems people always
have inserts/updates or at least select-for-updates.
the strange thing is, that the code that apparently produces this error
message does not have any of these.. it's mostly like:
(please note, that i cannot reproduce this problem, and also, i am not
logging all the sql commands. so i cannot be 100% sure that it was
caused by the following code, but from other tests, these are the
commands that are executed when the error happens)
BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
now a lot of selects, but nothing complicated, all of the form of
"SELECT x FROM y WHERE a=b", with some simple joins, and SELECT DISTINCT
and ORDER BY.
END;
can any of these commands cause the mentioned deadlock?
(of course, there are other processes that write to the database at this
time, but the one that reported the deadlock was this one)
as i said, i cannot reproduce it, so it's still possible, that when the
error happened, for some strange reason, also some other sql-commands
were executed, but i do not think so.
thanks,
gabor
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend