GreenPlum改变表的分布策略
程序员文章站
2022-05-21 12:26:11
...
创建一张表,在没有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作为分布键
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)使用以下语句修改分布键
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策略
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