Re: [HACKERS] Moving relation extension locks out of heavyweight lock manager
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>,
Thomas Munro <thomas.munro@enterprisedb.com>, Amit Kapila <amit.kapila16@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2017-12-12T15:42:35Z
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 →
-
Allow page lock to conflict among parallel group members.
- 3ba59ccc896e 13.0 landed
-
Allow relation extension lock to conflict among parallel group members.
- 85f6b49c2c53 13.0 landed
-
Add assert to ensure that page locks don't participate in deadlock cycle.
- 72e78d831ab5 13.0 landed
-
Assert that we don't acquire a heavyweight lock on another object after
- 15ef6ff4b985 13.0 landed
-
Fix unsafe usage of strerror(errno) within ereport().
- 81256cd05f07 11.0 cited
On Mon, Dec 11, 2017 at 4:10 PM, Masahiko Sawada <sawada.mshk@gmail.com> wrote: > Thank you for updating the patch. Here is two minor comments. > > + * we acquire the same relation extension lock repeatedly. nLocks is 0 is the > + * number of times we've acquired that lock; > > Should it be "nLocks is the number of times we've acquired that lock:"? Yes. > + /* Remember lock held by this backend */ > + held_relextlock.relid = relid; > + held_relextlock.lock = relextlock; > + held_relextlock.nLocks = 1; > > We set held_relextlock.relid and held_relextlock.lock again. Can we remove them? Yes. Can you also try the experiment Andres mentions: "Measure two COPYs to relations on different filesystems, reduce N_RELEXTLOCK_ENTS to 1, and measure performance. Then increase the concurrency of the copies to each relation." We want to see whether and how much this regresses performance in that case. It simulates the case of a hash collision. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company