绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
实际调优案例-案例:选择合适的分布列
2020-01-15 10:46:18

现象描述

表定义如下:

CREATE TABLE t1 (a int, b int);
CREATE TABLE t2 (a int, b int);

执行如下查询:

SELECT * FROM t1, t2 WHERE t1.a = t2.b;
优化分析

如果将a作为t1和t2的分布列:

CREATE TABLE t1 (a int, b int) DISTRIBUTE BY HASH (a);
CREATE TABLE t2 (a int, b int) DISTRIBUTE BY HASH (a);

则执行计划将存在“Streaming”,导致DN之间存在较大通信数据量,如图1所示。

图1 选择合适的分布列案例(一)
GaussDB 选择合适的分布列案例(一)

如果将a作为t1的分布列,将b作为t2的分布列:

CREATE TABLE t1 (a int, b int) DISTRIBUTE BY HASH (a);
CREATE TABLE t2 (a int, b int) DISTRIBUTE BY HASH (b);

则执行计划将不包含“Streaming”,减少DN之间存在的通信数据量,从而提升查询性能,如图2所示。

图2 选择合适的分布列案例(二)
GaussDB 选择合适的分布列案例(二)
分享好友

分享这个小栈给你的朋友们,一起进步吧。

GaussDB_数据库
创建时间:2020-01-06 16:21:44
华为GaussDB数据库小栈
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • GaussDB_数据库
    专家
戳我,来吐槽~