日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/10/12 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 greenplum分区表查看所占空间大小 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

?

轉載于:https://www.cnblogs.com/gobird/archive/2012/04/11/2442846.html

總結

以上是生活随笔為你收集整理的greenplum分区表查看所占空间大小的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。