GreenPlum 獲取表儲存大小的方法推薦

myamor發表於2012-08-31
第一種方法:   
 
   檢視錶佔用空間的語句可以用,但有時候好像是查不出來的
 
   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;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/177006/viewspace-742316/,如需轉載,請註明出處,否則將追究法律責任。

相關文章