方法一

查看表的分区键

select d.nspname||'.'||a.relname as table_name,string_agg(b.attname,',') as column_name
from
pg_catalog.pg_class a
inner join
pg_catalog.pg_attribute b
on a.oid=b.attrelid
inner join
pg_catalog.gp_distribution_policy c
on a.oid=c.localoid
inner join pg_catalog.pg_namespace d
on a.relnamespace=d.oid
where a.relkind='r' and b.attnum=any(c.attrnums)
and a.relname not like '%prt%'
group by table_name
order by table_name desc;

 

方法二

创建一张表,在没有primary key 或者 unique key 的情况下,GreenPlum默认会把第一个column作为分布键 zwcdb=# create table tab01(id int,name varchar(20));NOTICE: Table doesnt have DISTRIBUTED BY clause -- Using column named id as the Greenplum Da

 

创建一张表,在没有primary key 或者 unique key 的情况下,GreenPlum默认会把第一个column作为分布键

1

2

3

4

5

6

7

8

9

10

11

12

13

zwcdb=# create table tab01(id int,name varchar(20));

NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Greenplum Database data distribution key for this table.

HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.

CREATE TABLE

zwcdb=#

zwcdb=# \d+ tab01

                        Table "public.tab01"

 Column |         Type          | Modifiers | Storage  | Description

--------+-----------------------+-----------+----------+-------------

 id     | integer               |           | plain    |

 name   | character varying(20) |           | extended |

Has OIDs: no

Distributed by: (id)

使用以下语句修改分布键

1

2

3

4

5

6

7

8

9

10

zwcdb=# alter table tab01 set distributed by(name);

ALTER TABLE

zwcdb=# \d+ tab01

                        Table "public.tab01"

 Column |         Type          | Modifiers | Storage  | Description

--------+-----------------------+-----------+----------+-------------

 id     | integer               |           | plain    |

 name   | character varying(20) |           | extended |

Has OIDs: no

Distributed by: (name)

在不确定哪个column为分布键的情况下可以使用randomly策略

1

2

3

4

5

6

7

8

9

10

11

12

zwcdb=# alter table tab01 set distributed randomly;

ALTER TABLE

zwcdb=# alter table tab01 set with(reorganize=true);

ALTER TABLE

zwcdb=# \d+ tab01

                        Table "public.tab01"

 Column |         Type          | Modifiers | Storage  | Description

--------+-----------------------+-----------+----------+-------------

 id     | integer               |           | plain    |

 name   | character varying(20) |           | extended |

Has OIDs: no

Distributed randomly

相关文章:

  • 2021-11-04
  • 2021-06-25
  • 2022-01-09
  • 2022-02-20
  • 2021-10-22
  • 2021-06-22
  • 2021-04-25
  • 2022-01-27
猜你喜欢
  • 2021-06-26
  • 2021-09-06
  • 2022-12-23
  • 2021-11-26
  • 2021-06-08
  • 2021-12-18
相关资源
相似解决方案