GBase 8a
性能调优
文章

建表时选择数据分布策略(HASH / RANDOM / 复制表)

发表于2026-06-30 15:30:469次浏览0个评论

功能讲解
GBase 8a 是分布式数据库,建表时必须考虑数据如何分散到各节点。共有三种方式:
HASH 分布:按某列哈希值分发,适合大表,JOIN 时能本地执行,性能最好
RANDOM 分布:随机分发(默认),适合无明确关联条件的表
复制表:每个节点都存完整数据,适合小字典表

使用示例

-- 1. HASH 分布表(推荐大表使用,以 user_id 为分布键)
CREATE TABLE orders (
   order_id   BIGINT,
   user_id    BIGINT,
   amount     DECIMAL(10,2),
   order_date DATE
) DISTRIBUTED BY('user_id');

-- 2. 随机分布表(默认,不写 DISTRIBUTED BY 即可)
CREATE TABLE log_tmp (
   log_id   INT,
   msg      VARCHAR(500)
);

-- 3. 复制表(每个节点保留全量数据,适合小维度表)
CREATE TABLE dim_city (
   city_id   INT,
   city_name VARCHAR(50)
) REPLICATED;

⚠️ 避坑提示
分布键不能 UPDATE!选择分布键时优先选经常用于 JOIN 或 GROUP BY 的列,且唯一值要多(别用"性别"这种只有几个值的列,否则数据全挤到少数节点上,造成数据倾斜)。

评论

登录后才可以发表评论