Hi Adrian

Used this query to find the sizes:

select  relname AS object_name,relkind AS
object_type,pg_size_pretty(pg_relation_size(oid)) AS object_size
FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE
nspname = 'pg_catalog')
ORDER BY pg_relation_size(oid) DESC;

We have close to 2000 tables, not sure about the columns. There should be
around 120 - 150 tables that are active, getting the data from DMS.
We do not create/drop tables in our instance unless required.

This is a cloud managed SQL and we do not have any custom setting on the
vacuum part.

On Wed, Mar 19, 2025 at 10:47 PM Adrian Klaver <adrian.kla...@aklaver.com>
wrote:

> On 3/19/25 10:06, Siraj G wrote:
> > Hello!
> >
> > I have a PG (v16) instance which is occupying around 1TB of storage. Out
>
> Exact version of Postgres 16, include the x in 16.x.
>
> > of this, around 350GB is occupied by the table pg_catalog.pg_attribute.
> > Why is the catalog table's size so big?
> >
> > Here are the sizes:
>
> How did you measure the sizes?
>
> pg_attribute maintains information about table columns, how many table
> columns do you have?
>
> Are you creating/dropping tables on a regular basis?
>
> Is autovacuum running properly?
>
> Have you run VACUUM manually on pg_attribute?
>
> >
> > pg_attribute
> >
> > 338 GB
> > pg_attribute_relid_attnam_index
> >
> > 117 GB
> > pg_attribute_relid_attnum_index
> >
> > 69 GB
> >
> >
> > I think this table must have tons of dead tuples. Please suggest to me
> > if we can purge any data/shrink the size of this table.
> >
> > REgards
> > Siraj
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>
>

Reply via email to