Re: Locking when concurrent updated of foreign references

From: Jesper Krogh <jesper(at)krogh(dot)cc>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Locking when concurrent updated of foreign references
Date: 2011-04-12 04:46:14
Message-ID: 4DA3D916.1010902@krogh.cc
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2011-04-11 23:30, Alvaro Herrera wrote:
> Excerpts from Jesper Krogh's message of lun abr 11 17:07:33 -0300 2011:
>
>> But when the locking is done "row-level" then it is correct
>> to do it that way. It would allthough be nice with a weaker
>> locklevel for that kind of updates (I have no clue if that is
>> a hard problem).
> http://www.commandprompt.com/blogs/alvaro_herrera/2010/11/fixing_foreign_key_deadlocks/
>
That looks exactly what I have been seeing.

Naive suggestion (at least to part of the problem):
Would it be possible to identify updates that never
can violate any constraints and not do any verification
of foreign keys on the update and only pick a lock
that block concurrent updates of the same tuple?

UPDATE table set <something which is neither referenced or a reference>;
would all be of that type.

Would allthough require the database to examine
the UPDATE statement and in comparison with the
table definition figure out which of the column are
"safe" to update.

There might actually be a potential speedup since the update
would require to go visit the foreign table at all.

Jesper
--
Jesper

--
Jesper

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2011-04-12 06:55:04 Re: WAL, xl_heap_insert and tuple oid mystry
Previous Message Susan M Farley 2011-04-12 01:11:50 Calling Matlab function from Postgres