查看表占用空间的语句可以用,但有时候好像是查不出来的
select pg_size_pretty(pg_relation_size('schema.tablename'));
第二种方法:
还有一种方法是从视图 gp_toolkit.gp_size_of_table_disk 中获取表的大小
但这个表由于算法比较复杂,导致如果批量查询的速度非常慢,至少我是没有查出来过(可能是本人有耐心有限吧)
但经过测试发现单表的查询速度还是比较快的
因此可以结合定pg_tables 表(存放的是所有的表信息)进行统计
以下是本人写的一个函数(根据模式名进行统计),公供参考
for rec in
select schemaname||'.'||tablename tablename
from pg_tables
where schemaname=v_schemaname
loop
select sotdschemaname||'.'||sotdtablename aa,sotdsize,sotdtoastsize,sotdadditionalsize
into rec1
from gp_toolkit.gp_size_of_table_disk a
where a.sotdoid =rec.tablename::regclass;
end loop;
select schemaname||'.'||tablename tablename
from pg_tables
where schemaname=v_schemaname
loop
select sotdschemaname||'.'||sotdtablename aa,sotdsize,sotdtoastsize,sotdadditionalsize
into rec1
from gp_toolkit.gp_size_of_table_disk a
where a.sotdoid =rec.tablename::regclass;
end loop;