Re: Reducing overhead of frequent table locks
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Noah Misch <noah@leadboat.com>, Alexey Klyukin <alexk@commandprompt.com>, pgsql-hackers@postgresql.org
Date: 2011-05-27T21:01:51Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix possible "tuple concurrently updated" error in ALTER TABLE.
- fbcf4b92aa64 9.1.0 cited
Robert Haas <robertmhaas@gmail.com> writes: > When a strong lock is taken or released, we have to increment or > decrement strong_lock_counts[fasthashpartition]. Here's the question: > is that atomic? In other words, suppose that strong_lock_counts[42] > starts out at 0, and two backends both do ++strong_lock_counts[42]. > Are we guaranteed to end up with "2" in that memory location or might > we unluckily end up with "1"? I think the latter is possible... and > some guard is needed to make sure that doesn't happen. There are "atomic increment" primitives on most/all multiprocessors, although availing ourselves of them everywhere will take an amount of work not unlike developing the spinlock primitives :-(. You are dead right that this is unsafe without that. regards, tom lane