文档首页 > > 开发指南> 教程:调优表设计> 步骤5:选择分布列

步骤5:选择分布列

分享
更新时间: 2019/06/24 GMT+08:00

当表的分布方式选择了Hash分布策略时,分布列选取至关重要。如果分布列选择不当,可能导致数据倾斜,查询时出现部分DN的I/O短板,从而影响整体查询性能。

在这一步中,建议按照如下的最佳实践为各Hash表选择分布键:

  1. 列值应比较离散,以便数据能够均匀分布到各个DN。例如,考虑选择表的主键为分布列。又比如在人员信息表中选择身份证号码为分布列。
  2. 在满足第一条原则的情况下尽量不要选取存在常量filter的列。例如,表dwcjk相关的部分查询中出现dwcjk的列zqdh 存在常量的约束(例如zqdh=’000001’),那么就应当尽量不用zqdh做分布列。
  3. 在满足前两条原则的情况,考虑选择查询中的连接条件为分布列。以便Join任务能够下推到DN中执行,且减少DN之间的通信数据量。

依据上述最佳实践原则,选择各表的主键作为Hash表分布键。

表名

记录数

分布方式

分布键

Store_Sales

287997024

Hash

ss_item_sk

Date_Dim

73049

Replication

-

Store

402

Replication

-

Item

204000

Replication

-

Time_Dim

86400

Replication

-

Promotion

1000

Replication

-

Customer_Demographics

1920800

Hash

cd_demo_sk

Customer_Address

1000000

Hash

ca_address_sk

Household_Demographics

7200

Replication

-

Customer

1981703

Hash

c_customer_sk

Income_Band

20

Replication

-

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区