GP數據庫分佈鍵查詢

GP數據庫中的表一般都會設置分佈鍵,如果沒有設置的話,它一般默認是第一個字段,所以一般會建議使用一個記錄會分佈均勻的字段作爲分佈鍵使用,使表中的記錄均勻的分佈到每一個segment中。

GP數據庫分佈鍵查詢方法:

select c.schema_name,
       c.table_name,
       c.table_comment as "中文表明",
       c.column_name as "分佈鍵",
  from ( select d.nspname as schema_name,
                c.relname as table_name,
                obj_description(c.oid) as table_comment,
                a.attname as column_name
           from pg_class c
           left join pg_attribute a
             on a.attrelid = c.oid
           join pg_namespace d
             on d.oid = c.relnamespace
           left join pg_inherits f
             on c.oid = f.inhrelid
          where a.attnum > 0
            and f.inhrelid is null)c
  join (select a.attrnums[i.i] as a.attrnums,
               b.attname,
               a.localoid::regclass as localoid
          from gp_distribution_policy a,
               (select generate_series(1,10) as generate_series) i(i),
               pg_attribute b
        where a.attrnums[i.i] is not null
          and a.localoid = b.attrelid
          and a.attrnums[i.i] = b.attnum) t
    on c.column_name = t.attname
   and ((c.schema_name::text || '.'::text) || a.table_name::text)::regclass::oid = t.localoid::oid
 order by c.schema_name,
          c.table_name,
          c.column_name
;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章