GBase 8a
其他
文章

表介绍

发表于2024-12-25 11:01:3870次浏览0个评论

复制表

复制表将会存在于各个节点上,即表的名字和数据完全一致。

需要使用REPLICATED关键字来创建复制表。

一般来说,小表(维度表)可以被创建成复制表。

一些表频繁参与JOIN查询表也可以被创建成复制表。

 

语法样例:

create table t1(a int,b varchar(10),c datetime) replicated;

 

随机分布表

数据平均分布于集群的所有运算节点,每个节点管理部分表数据

语法样例:

create table t2(a int,b varchar(10),c datetime);

 

HASH分布表

如何选用HASH 分布策略,保证数据分布均匀是获取高性能的关键所在。

选择的依据遵从四大原则:

第一个就是首先保证所有节点数据存放是均匀的,避免出现节点出现数据分布过多或过少情

况;

第二,如果经常进行大表连接,尽量把连接字段定义成hash 分布字段,这样尽量减少无效

的节点间拉表操作;

第三,尽量保证where 条件产生的结果集的存储也尽量是均匀的,避免在做查询的时候,

出现某些节点过于繁忙或清闲的情况;

第四,选择使用频率高的group by 字段作为hash 字段。

限制说明:

distributed by当前只支持varchar、int两种数据类型。

distributed by列的值,不允许进行更新操作(update)。

distributed by列不允许设置 default 值。

 

语法样例:

create table t3(a int,b varchar(10),c datetime)distributed by ('a');

 

临时表:

使用关键词TEMPORARY,临时表被限制在当前连接中,当连接关闭时,临时表会自动被删除。

注意事项:

临时表支持除ALTER之外的所有DDL及DML操作。

临时表不支持使用gcdump工具导出表结构。

临时表支持在当前session中使用查询结果导出表中数据,但是临时表不能被备份

语法样例:

CREATE TEMPORARY TABLE t4 (a int);                             

拷贝表

拷贝表,目标表默认为随机分布表

  示例:

 create table t2 as select * from t1 limit 0;

  该方式建立的t2表没有hash分布列,即使t1有hash分布列

拷贝表,目标表为任意类型表

  示例:

 create table t2 distributed by ('fx') as select * from t1 limit 0;

 create table t2 replicated as select * from t1 limit 0;

拷贝表,目标表类型与源表一致

 create table t2 like t1;

 

评论

登录后才可以发表评论