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创建和管理表
上一篇:Docker 翻脸,不再开源!
分享好友
分享这个小栈给你的朋友们,一起进步吧。
订阅须知
• 所有用户可根据关注领域订阅专区或所有专区
• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询
• 专区发布评论属默认订阅所评论专区(除付费小栈外)
技术专家
查看更多- itt0918专家