SQL to display Database Size,Schema Size, Table and Index Size in Greenplum

--Database size

select datname, pg_size_pretty(pg_database_size(datname)) as size from pg_database;

\qecho

\qecho  -- Schema size

select sosdnsp as SchemaName,

round(sosdschematablesize/power(1024,3)::numeric,2) as table_size_GB ,

round(sosdschemaidxsize/power(1024,3)::numeric,2) as index_size_GB,

round((sosdschematablesize + sosdschemaidxsize)/power(1024,3)::numeric,2) as schema_size_GB

from gp_toolkit.gp_size_of_schema_disk ;

\qecho

 

set statement_mem='1GB';

-- Table and Index Size

SELECT tabs.nspname AS schema_name

, COALESCE(parts.tablename, tabs.relname) AS table_name

, ROUND(SUM(sotaidtablesize)/1024/1024/1024,3) AS table_GB

, ROUND(SUM(sotaididxsize)/1024/1024/1024,3) AS index_GB

, ROUND(SUM(sotaidtablesize)/1024/1024/1024,3)+ROUND(SUM(sotaididxsize)/1024/1024/1024,3) total_gb

FROM   gp_toolkit.gp_size_of_table_and_indexes_disk sotd

,     (SELECT c.oid, c.relname, n.nspname

       FROM   pg_class c

       ,      pg_namespace n

       WHERE  n.oid = c.relnamespace

       AND    c.relname NOT LIKE '%_err'

      )tabs

LEFT JOIN pg_partitions parts

ON     tabs.nspname = parts.schemaname

AND    tabs.relname = parts.partitiontablename

WHERE  sotd.sotaidoid = tabs.oid and tabs.nspname = 'public'

GROUP BY tabs.nspname, COALESCE(parts.tablename, tabs.relname)

ORDER BY 1 desc,(ROUND(SUM(sotaidtablesize)/1024/1024/1024,3)+ROUND(SUM(sotaididxsize)/1024/1024/1024,3)) desc,2;

 

 -- Schema Size

select

sosdnsp as schemaname,

sosdschematablesize/(1024*1024*1024) as SchemaTableSizeGB,

sosdschemaidxsize/(1024*1024*1024) as SchemaIndxSizeGB,

round((sosdschematablesize/power(1024,4)+sosdschemaidxsize/power(1024,4)):: numeric,2) as SchemaSizeTB

from schema_size() where sosdschematablesize+sosdschemaidxsize >0;

where schema_size() function is like

As gpadmin:

-- Schema Size

create or replace function schema_size()

returns setof gp_toolkit.gp_size_of_schema_disk

as

$$

select * from gp_toolkit.gp_size_of_schema_disk;

$$

language sql volatile security definer;

-- Table Size

create or replace function table_size()

returns setof gp_toolkit.gp_size_of_table_disk

as

$$

select * from gp_toolkit.gp_size_of_table_disk;

$$

language sql volatile security definer;

-- Table and Index Size

create or replace function tableandindex_size()

returns setof gp_toolkit.gp_size_of_table_and_indexes_disk

as

$$

select * from gp_toolkit.gp_size_of_table_and_indexes_disk;

$$

language sql volatile security definer;

grant execute on function schema_size() to sachi;

grant execute on function table_size() to sachi;

grant execute on function tableandindex_size() to sachi;