Re: scalability bottlenecks with (many) partitions (and more)
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Tomas Vondra <tomas@vondra.me>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Andres Freund <andres@anarazel.de>
Date: 2024-09-01T23:53:39Z
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 →
-
Make FP_LOCK_SLOTS_PER_BACKEND look like a function
- c878de1db438 18.0 landed
-
Fix asserts in fast-path locking code
- a7e5237f268e 18.0 landed
-
Increase the number of fast-path lock slots
- c4d5cb71d229 18.0 landed
On Sun, Sep 1, 2024 at 3:30 PM Tomas Vondra <tomas@vondra.me> wrote: > I don't think that's possible with hard-coded size of the array - that > allocates the memory for everyone. We'd need to make it variable-length, > and while doing those benchmarks I think we actually already have a GUC > for that - max_locks_per_transaction tells us exactly what we need to > know, right? I mean, if I know I'll need ~1000 locks, why not to make > the fast-path array large enough for that? I really like this idea. I'm not sure about exactly how many fast path slots you should get for what value of max_locks_per_transaction, but coupling the two things together in some way sounds smart. > Of course, the consequence of this would be making PGPROC variable > length, or having to point to a memory allocated separately (I prefer > the latter option, I think). I haven't done any experiments, but it > seems fairly doable - of course, not sure if it might be more expensive > compared to compile-time constants. I agree that this is a potential problem but it sounds like the idea works well enough that we'd probably still come out quite far ahead even with a bit more overhead. -- Robert Haas EDB: http://www.enterprisedb.com