Re: selecting a random record - Mailing list pgsql-general

From Tom Lane
Subject Re: selecting a random record
Date
Msg-id 26586.981506519@sss.pgh.pa.us
Whole thread Raw
In response to Re: selecting a random record  (Warren Vanichuk <pyber@street-light.com>)
Responses Re: Deadlock issues (was: Re: [GENERAL] selecting a random record)  (Warren Vanichuk <pyber@street-light.com>)
List pgsql-general
Warren Vanichuk <pyber@street-light.com> writes:
> I have a smallish sized database that's getting alot of update transactions
> to it.  It's been running fine over the past several weeks, but suddenly I'm
> starting to see :

> NOTICE:  Deadlock detected -- See the lock(l) manual page for a possible cause.

You've probably added another function that updates the same rows in a
different, conflicting order.  For example, suppose you have two
transactions, one of which does

    UPDATE table SET f1 = 42 WHERE id = 'foo';

while the other is doing

    UPDATE table SET f1 = 23 WHERE id = 'bar';

This is fine, but now suppose the first one does

    UPDATE table SET f2 = 11 WHERE id = 'bar';

It's got to wait to see if the second one commits or not, to know which
version of the 'bar' row is relevant and should be updated.  Finally,
suppose the second transaction does

    UPDATE table SET f2 = 22 WHERE id = 'foo';

Now you have two transactions waiting for each other --- ie, deadlock.

            regards, tom lane

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: pg_dump crash
Next
From: Stephan Szabo
Date:
Subject: Re: Select in function?