GaussDB-案例:选择合适的分布列

22 阅读1分钟

GaussDB-案例:选择合适的分布列

现象描述

表定义如下:

| ``` 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](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0302.html#ZH-CN_TOPIC_0000001911586325__zh-cn_topic_0000001704458425_zh-cn_topic_0073253824_zh-cn_topic_0040046521_fig21969731)所示。

[]()[]()**图1** 选择合适的分布列案例(一)  
![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/1fc06d29764f40939b6e99a66bdd5d8c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771400525&x-signature=LhIYLb%2F0GAkrP2cwWi5YkPR1FJ0%3D)

如果将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](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0302.html#ZH-CN_TOPIC_0000001911586325__zh-cn_topic_0000001704458425_zh-cn_topic_0073253824_zh-cn_topic_0040046521_fig63509856)所示。

[]()[]()**图2** 选择合适的分布列案例(二)  
![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/c364e3ec90d6429ea38be48fb7a84ce0~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771400525&x-signature=r9HqSiJLnw1XPbyToYN7FbschWk%3D)

更多详情请参考GaussDB 文档中心:<https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html>