2017-11-07 22:39 GMT+01:00 Scott Marlowe <scott.marlowe@xxxxxxxxx>:
On Tue, Nov 7, 2017 at 2:25 PM, Ulf Lohbrügge <ulf.lohbruegge@xxxxxxxxx> wrote:
> 2017-11-07 20:45 GMT+01:00 Andres Freund <andres@xxxxxxxxxxx>:
>>
>> On 2017-11-07 18:48:14 +0100, Ulf Lohbrügge wrote:
>> > Hi,
>> >
>> > 2017-11-07 16:11 GMT+01:00 Andres Freund <andres@xxxxxxxxxxx>:
>> >
>> > > Hi,
>> > >
>> > > On 2017-11-07 11:11:36 +0100, Ulf Lohbrügge wrote:
>> > > > I'm using PostgreSQL 9.5.9 on Debian and experience slow execution
>> > > > of
>> > > some
>> > > > basic SET statements.
>> > > >
>> > > > I created about 1600 roles and use that setup for a multi tenancy
>> > > > application:
>> > >
>> > > Hm. How often do you drop/create these roles? How many other
>> > > roles/groups is one role a member of?
>> > >
>> >
>> > I create between 10-40 roles per day.
>>
>> Could you VACUUM (VERBOSE, FREEZE) that table and report the output? Do
>> you ever delete roles?
>
>
> Which table do you mean exactly? pg_catalog.pg_authid?
>
> Sorry, forgot to write that: I delete about 2-3 roles per day.
I'm gonna take a guess that pg_users or pg_roles has gotten bloated
over time. Try running a vacuum full on both of them. It's also
possible some other pg_xxx table is bloated out here too you might
need to download something like checkpostgres.pl to check for bloat in
system catalog tables.
As pg_user and pg_roles are views: Do you mean pg_authid? That table is just 432kb large:
--snip--
postgres=# select pg_size_pretty(pg_total_relation_size('pg_authid'));
pg_size_pretty
----------------
432 kB
(1 row)
--snap--
I don't want to start a vacuum full right now because I'm not quite sure if things will lock up. But I will do it later when there is less traffic.
I just ran "check_postgres.pl --action="" and got the following output:
--snip--
POSTGRES_BLOAT OK: DB "postgres" (host:localhost) (db postgres) index pg_shdepend_depender_index rows:? pages:9615 shouldbe:4073 (2.4X) wasted bytes:45400064 (43 MB) | pg_shdepend_depender_index=45400064B pg_catalog.pg_shdepend=9740288B pg_shdepend_reference_index=4046848B pg_depend_reference_index=98304B pg_depend_depender_index=57344B pg_catalog.pg_class=32768B pg_catalog.pg_description=16384B pg_amop_fam_strat_index=8192B pg_amop_opr_fam_index=8192B pg_catalog.pg_amop=8192B pg_catalog.pg_depend=8192B pg_class_oid_index=0B pg_class_relname_nsp_index=0B pg_class_tblspc_relfilenode_index=0B pg_description_o_c_o_index=0B
--snap--
Looks fine, doesn't it?
Cheers,
Ulf