On Thu, Nov 17, 2016 at 1:33 PM, dhaval jaiswal <dhavallj@xxxxxxxxxxx> wrote:
select * from pg_stat_sys_tables where relname = 'pg_class';
-[ RECORD 1 ]-------+-----------relid | 1259schemaname | pg_catalogrelname | pg_classseq_scan | 1838seq_tup_read | 3177416idx_scan | 1027456557idx_tup_fetch | 959682909n_tup_ins | 0n_tup_upd | 0n_tup_del | 0n_tup_hot_upd | 0n_live_tup | 0n_dead_tup | 0n_mod_since_analyze | 0last_vacuum |last_autovacuum |last_analyze |last_autoanalyze |vacuum_count | 0autovacuum_count | 0analyze_count | 0autoanalyze_count | 0
Yes, the size of pg_class table is of 5 GB. However, the existing row is only 2380 only. It's got fragmented.
From: Adrian Klaver <adrian.klaver@xxxxxxxxxxx>
Sent: Thursday, November 17, 2016 8:29 PM
To: dhaval jaiswal; David G. Johnston
Cc: pgsql-general@xxxxxxxxxxxxxx
Subject: Re: pg_class (system) table increasing size.On 11/16/2016 07:08 PM, dhaval jaiswal wrote:
>
>>> Because you are creating (specific) objects.
>
> I have gone through the link and how would i figure out which
> specific object is causing this. Can you please elaborate more here.
>
>
> We do not have the much temporary table usage.
>
>
> Since the size is bigger (5 GB) to maintain. does it requires
> maintenance as well for thepg_class.
Should have added to my previous post. What does:
select * from pg_stat_sys_tables where relname = 'pg_class';
show?
>
>
> It seems its affecting performance.
>
>
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx
>Yes, the size of pg_class table is of 5 GB. However, the existing row is only 2380 only. It's got fragmented.
I strongly believe you are incorrect about the size of the pg_class table.
The correct way to determine that size is:
SELECT n.nspname as schema,
c.relname as table,
a.rolname as owner,
c.relfilenode as filename,
c.reltuples::bigint,
pg_size_pretty(pg_relation_size(n.nspname|| '.' || c.relname)) as size,
pg_size_pretty(pg_total_relation_size(n.nspname|| '.' || c.relname)) as total_size,
pg_relation_size(n.nspname|| '.' || c.relname) as size_bytes,
pg_total_relation_size(n.nspname|| '.' || c.relname) as total_size_bytes,
CASE WHEN c.reltablespace = 0
THEN 'pg_default'
ELSE (SELECT t.spcname
FROM pg_tablespace t WHERE (t.oid = c.reltablespace) )
END as tablespace
FROM pg_class c
JOIN pg_namespace n ON (n.oid = c.relnamespace)
JOIN pg_authid a ON ( a.oid = c.relowner )
WHERE relname = 'pg_class' ;
What does that show for reltuples and total_size ?
--
Melvin Davidson
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.