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 ;