关于gbase8a分区表
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】:
【操作系统】:
【CPU】:
【问题描述】*:
有几个问题想请问下 1.如果没有指定分布字段,也就是没有 DISTRIBUTED BY ,那表的分布是依据什么来的?生产建议怎么建表 2.文本类型的字段是不能建list分区吗? 以上都是在gbase8a下
评论
如果没有指定分布字段,表的分布依据是什么?生产建议如何建表?
如果在建表时没有使用 DISTRIBUTED BY 子句,GBase 8a MPP Cluster 默认创建的是随机分布表。在这种表里,数据会以随机方式分布在集群的各个数据节点上。
生产环境建表建议:
强烈建议在生产环境中避免使用随机分布表,因为它可能导致数据倾斜和严重的性能问题。应根据业务场景选择合适的表类型:
复制表 ( REPLICATED ): 适用于维度表、小表。它在每个数据节点上都存储一份完整数据,关联查询时无需数据移动,性能极佳。
哈希分布表 ( DISTRIBUTED BY (column_name) ): 适用于事实表、大表。您需要指定一个或多个列作为哈希分布列,数据会根据这些列的值进行哈希计算后分布到不同节点。选择分布列的原则通常是高频关联(JOIN)列或高频分组(GROUP BY)列,这样可以尽量减少跨节点的数据重分布(REDIST)操作,提升查询性能。
文本类型的字段是不能建LIST分区吗?
是的,在GBase 8a中,LIST分区不支持直接使用文本类型(如CHAR, VARCHAR)的列作为分区键。
LIST分区的分区条件 partition by LIST (col_name expr) 要求必须是:
一个指定列,且该列类型支持 tinyint、int、smallint、bigint、date、datetime、time。
或者是基于上述类型列并返回一个整数的表达式。
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528