Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@lists.postgresql.org
Cc: alex work <alexwork033@gmail.com>, Robert Haas <robertmhaas@gmail.com>
Date: 2024-03-21T20:31:45Z
Lists: pgsql-hackers, pgsql-general
I wrote: > ... I still see the problematic GRANT taking ~250ms, compared > to 5ms in v15. roles_is_member_of is clearly on the hook for that. Ah: looks like that is mainly the fault of the list_append_unique_oid calls in roles_is_member_of. That's also an O(N^2) cost of course, though with a much smaller constant factor. I don't think we have any really cheap way to de-duplicate the role OIDs, especially seeing that it has to be done on-the-fly within the collection loop, and the order of roles_list is at least potentially interesting. Not sure how to make further progress without a lot of work. regards, tom lane
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