Greenplum 创建表
Greenplum 创建表
  Greenplum是分布式的关系型数据库系统,创建表需要指定分布键,创建表需要有create的DBA权限,⽬的⼦啊与将数据分布到各个segment。选择分布键⾮常重要,选择错误会导致数据不唯⼀,严重的造成sql的性能急剧下降。
⼀、Greenplum ⽀持字段类型
1、数值类型
类型名称存储空间描述范围smallint 2字节⼩范围整数-2~+2 -1integer 4字节常⽤的整数-2~2 -1bigint 8字节⼤范围整数-2 ~2-1decimal 变长⽤户声明精确度,精确⽆限制numeric 变长⽤户声明精确度,精确⽆限制real
4字节精确度,不确定6位⼗进制数字精度double precision
8字节变精度,不精确15位⼗进制数字精度
serial 4字节⾃增整数1~2-1bigserial
8字节
⼤范围的⾃增整数
1~2-1
2、字符类型
类型名称
描述character varying(n),varchar(n)
变长,有长度限制character(n),char(n)
定长,不⾜补空⽩text
变长,⽆长度限制
3、时间类型
类型名称
存储空间描述最低值最⾼值时间精确timestamp [ ( p) ][without time zone]
8字节时间和⽇期4713BC 5874897AD 1毫秒timestamp[( p)] with time zone
8字节⽇期和时间,带时区
4713BC 5874897AD 1毫秒interval[( p)]
12字节时间间隔-178000000年
178000000年1毫秒date
4字节只⽤于表⽰⽇期4713BC 5874897AD 1毫秒time[(p)without time zone]8字节只⽤于表⽰⼀⽇内时间0:00:0024:00:001毫秒time [( p)] with time zone
12字节
只⽤于表⽰⼀⽇内时间,带时区
00:00:00+1459
24:00:00-1459
1毫秒
⼆、greenplum 创建表
1、⼆维表同样是GP中重要的数据存储对象,为了更好的⽀持数据仓库海量数据的访问,GP的存储⽅式可以分为
77313163633163
⾯向⾏存储的普通堆积表
⾯向列存储的AOT表(append only table)
AOT表也可以是按⾏存储的,但是按列存储必须是AOT表,如经常更新数据,或者较⼩的维度数据,应该使⽤普通堆积表存储。
2、普通堆积表创建
create table student(
id character varing(30),
xm character varing(20),
xh character varing(20),
bj character varing(20)
)
distributed by (id);
comment on table student is '学⽣表';greenplum数据库
comment on column student.id  is '主键id';
comment on is '姓名';
comment on column student.xh is '学号';
comment on column student.bj is '班级';
3、分布键(哈希键)
distributed by (id) 指定id字段为分布键
distributed randonly 随机分布
注意事项:
未指定分布键,默认表的主键为分布键,若表没有主键,则默认把第⼀列当做哈希键。
分布键可以定义为⼀个或者多个。
分布键必须是唯⼀键。
不能修改分布键,且哈希键的列不能update。
⼀个表只能定义⼀个唯⼀键,且主键和唯⼀键必须作为哈希键。
数值重复度低,保证数据均匀分布。
防⽌数据倾斜,分布键不适合,float、double数据类型也不适合,interger、varchar⽀持
⼤表经常做连接时,选择相同的分布键,避免跨节点进⾏join.
尽量不使⽤序列号。
4、AOT指定按列分布
appendonly=true 指定是否只appenf追加。
compresslevel=5 zlib压缩级别 1-9共9个级别 9压缩级别最⼤。
orientation=column 指定是否按列存储。
compresstyle=zlib GP提供俩种压缩算法:zlib和quicklz。
oids =false 对象标识符,不分配。
才华不溢,梦想依旧
唯⼼沉淀,遨游宇宙

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。