绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Greenplum创建和管理表
2023-03-24 17:07:57

Greenplum中创建表和pg中类似,不过区别在于其表中的行会被分布在不用的segment中。我们需要在创建表的时候指定分布策略。

gp中的表有一些限制:
1、UNIQUE和PRIMARY KEY约束必须和它们所在表的分布键和分区键(如果有)兼容。
2、不支持外键,但是语法上允许外键约束,但不会起作用。
3、用户在分区表上定义的约束将作为整体应用到分区表上。用户不能在该表的单独的部分上定义约束。

所有gp中的都会被分布。当用户创建或者修改一个表时,用户可以有选择地指定DISTRIBUTED BY(哈希分布)或者 DISTRIBUTED RANDOMLY(循环分布)来决定该表的行分布。

在创建表的时候使用DISTRIBUTED BY和DISTRIBUTED RANDOMLY子句指定一个表的分布策略。默认是使用PRIMARY KEY(如果表有主键)或者表的个列作为分布键的哈希分布策略(允许使用多个列作为分布列)。几何或者用户定义数据类型的列不能作为Greenplum分布键列。如果一个表没有符合要求的列,建议使用随机或者循环方式分布行。

例子:
–不指定分布列
会提示使用列作为分布列

postgres=# CREATE TABLE t1(id int,info text);
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

–指定分布列

postgres=# CREATE TABLE t1(id int,info text)
postgres-# distributed by (id);
CREATE TABLE

–循环分布
如果所有的列都无法满足将数据均匀分布到所有segment节点的要求时,建议使用这种方法,会以随机或者循环方式分布行。

postgres=# CREATE TABLE t1(id int,info text)
postgres-# DISTRIBUTED RANDOMLY;
CREATE TABLE


本文来源:https://blog.csdn.net/weixin_39540651/article/details/104051606

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Greenplum
创建时间:2022-04-08 15:36:19
Greenplum
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • itt0918
    专家
戳我,来吐槽~