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