greenplum分区表查看所占空间大小

系统 2545 0

在使用greenplum数据库的时候,有的时候想要查看表所占用空间的大小,会使用如下二个函数pg_relation_size和pg_size_pretty.

前者用来查看数据大小,后者是human readable的调整.方法如下:

select pg_size_pretty(pg_relation_size('relation_name')) ;

select pg_size_pretty(pg_relation_size(oid)) ;
但是,对于分区表而言,这个方法就没有用了,会发现使用后表的大小为0bytes.原因在于:GP的分区表的主表只是一个表定义,其实际数据内容存储在继承父表的分区子表里面了.上网查了一下,没发现有相应的函数,干脆写了个函数来实现.

 

--  Function: calc_partition_table(character varying, character varying)

--  DROP FUNCTION calc_partition_table(character varying, character varying);

CREATE   OR   REPLACE   FUNCTION  calc_partition_table(v_schemaname  character   varying , v_tablename  character   varying )
   RETURNS   bigint   AS
$BODY$
DECLARE
    v_calc  BIGINT  : =   0 ;
    v_total  BIGINT  : =   0 ;
    v_tbname  VARCHAR ( 200 );
    cur_tbname  cursor   for   select  schemaname || ' . ' || partitiontablename  as  tb  from  pg_partitions
    where  schemaname = v_schemaname  and  tablename = v_tablename;
BEGIN
     OPEN  cur_tbname;
    loop
         FETCH  cur_tbname  into  v_tbname;
         if   not  found  THEN
             exit ;
         end   if ;
         EXECUTE   ' select pg_relation_size( ''' || v_tbname || ''' ) '   into  v_calc;
        v_total: = v_total + v_calc;        
     end  loop;
     CLOSE  cur_tbname;
     RETURN  v_total;
end ;
$BODY$
  LANGUAGE plpgsql VOLATILE;
ALTER   FUNCTION  calc_partition_table( character   varying character   varying ) OWNER  TO  gpadmin;

 

greenplum分区表查看所占空间大小


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论