greenplum分割槽表檢視所佔空間大小

2021-06-07 19:51:30 字數 1750 閱讀 9323

在使用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

orreplace

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

forselect 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;

ifnot found 

then

exit;

endif;

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 分割槽表介紹

greenplum 分割槽表 greenplum分割槽表的原理和postgresql的原理相同,都是把一張大表進行按照適合的維度進行分割,通過表的繼承,規則,約束實現的。在greenplum中,乙個表是否分割槽表儲存在pg partition中.gp在建表的時候會有乙個distributed by選...

檢視oracle分割槽表資訊

顯示資料庫所有分割槽表的資訊 dba part tables 顯示當前使用者可訪問的所有分割槽表資訊 all part tables 顯示當前使用者所有分割槽表的資訊 user part tables 顯示表分割槽資訊 顯示資料庫所有分割槽表的詳細分割槽資訊 dba tab partitions 顯...

把非分割槽表改為分割槽表

把非分割槽表改為分割槽表 說明 把非分割槽表改為分割槽表適用於歷史表 1 建立分割槽表 結構和非分割槽表tbl stock balance log相同 createtabletbl stock balance log part1 account id varchar2 20 byte occur d...