Subject: Re: size of attributes table is too big

From: Adrian Klaver <[email-masked]>
Date: Wed, 19 Mar 2025 10:17:10 -0700

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
[email-masked]

---

From: Siraj G <[email-masked]>
Date: Wed, 19 Mar 2025 23:06:49 +0530

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.

---

From: Adrian Klaver <[email-masked]>
Date: Wed, 19 Mar 2025 10:48:39 -0700

On 3/19/25 10:36 AM, Siraj G wrote:
> 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.

This would have been a good thing to have included in the original post.

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

To be clear the issue is in the Google Cloud SQL instance?

Or are you seeing the problem on the Postgres instance the data is 
coming from?

> 
> On Wed, Mar 19, 2025 at 10:47 PM Adrian Klaver 
> <[email-masked] <mailto:[email-masked]>> wrote:
> 
>     [email-masked] <mailto:[email-masked]>
>