表介绍
复制表
复制表将会存在于各个节点上,即表的名字和数据完全一致。
需要使用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;
评论
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25059
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17529