GreenPlum 获取表存储大小的方法推荐

第一种方法:   
 
   查看表占用空间的语句可以用,但有时候好像是查不出来的
 
   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;
请使用浏览器的分享功能分享到微信等