Christopher Kings-Lynne wrote:
Uh ... the interesting question is usually not "does this backend hold
any row locks", it is "is this row locked by any backends".  If the
latter question is not *exceedingly* cheap to answer, at least in the
normal case where the answer is no, you don't have a workable solution,
because you'll be adding nontrivial overhead to every row update.


OK, what I mean is to know if a row is locked by any backend, why can't we just put a reference count of the number of locks on that row, instead of recording each backend separately? Wouldn't that require a fixed amount of shared mem?

Don't forget having to deal with a backend dying without being able to decrement the count (not my idea, Bruce (iirc) mentioned it last time this was discussed). I think at the least you'd need a max-trans-id-with-lock number stored next to the count so that in the event of backend crashes the lock will eventually be released.


--
  Richard Huxton
  Archonet Ltd

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to