Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs
Dominique Devienne <ddevienne@gmail.com>
From: Dominique Devienne <ddevienne@gmail.com>
To: alex work <alexwork033@gmail.com>
Cc: pgsql-general@lists.postgresql.org
Date: 2024-03-21T07:59:29Z
Lists: pgsql-hackers, pgsql-general
On Thu, Mar 21, 2024 at 8:10 AM alex work <alexwork033@gmail.com> wrote: > We encounter slow `GRANT ROLES` only on PostgreSQL 16 instances up to 42 > seconds > in production, the client process at PostgresSQL would use 100% of the > CPU. [...] > Using ROLE `acc`, grant `d_` ROLE to a session ROLE: > real 0m7.579s [...] PostgreSQL 15 > Using ROLE `acc`, grant `d_` ROLE to a session ROLE: > real 0m0.077s > Ouch, that's a ~ 100x regression. Thanks for the write-up, that's worrying. We don't have as many ROLEs, but we do have plenty, so this is worrying. On top of the v16 ROLE changes breaking on ROLE logic, which was fine prior (v12-v15). We've paused for now our planned v16 upgrade, until we have more time to adapt. Like you, I welcome the changes. But it turns out more expensive to adapt to them. And your report certainly makes me wonder whether we should hold off until that perf regression is addressed. Thanks, --DD
Commits
-
Optimize roles_is_member_of() with a Bloom filter.
- d365ae705409 17.0 landed
-
Use a hash table for catcache.c's CatCList objects.
- 473182c9523a 17.0 landed
- 14e991db89b1 16.3 landed