表定义如下:
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 选择合适的分布列案例(一)
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 选择合适的分布列案例(二)
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!