Redshift:主表的DIST KEY和SORT KEY可以适当组合吗?

时间:2018-10-05 10:51:32

标签: amazon-redshift

让我问一下Redshift中主表的合适distkey(dist样式)和排序键是什么。

我们有几个主表,它们具有不同的网络大小,用途和基数,现在我们验证哪种SORTKEY和DISTKEY组合会更合适。

例如,我们的客户主表中有两个主键,它们在BI查询中经常使用,而其他表的联接键如下;

例如MST_CUSTOMER(大约700万,SQL Server中为850MB)

CUSTOMER_ID     <-- Primary Key, Unique and High Cardinality
CUSTOMER_CATEGORY   <-- Low Cardinality (like VIP, BZ) but not always uses in BI query
CUST_NAME
CUST_ADDRESS...

首先,如果我们可以将两列都用于SORTKEY,那么在这种情况下这是最好的顺序?

1.Should Low cardinality comes first (CUST_CATEGORY, CUST_ID) 
2.Hifh frequency comes first (CUST_ID, CUST_CATEGORY)
3.should chose only single column eigher of CUST_ID or CUST_CATEGORY

通常,请问在这种情况下最好的组合是什么?

1.DISTSTYLE KEY & COMPOUND SORTKEY
2.DISTSTYLE KEY & SORTKEY
3.DISTSTYLE ALL & INTERLEAVED SORTKEY...

我想如果我们在查询计划中经常找到“ DS_BCAST_INNER”,最好考虑使用“ DISTSTYLE ALL”。 但是仍然不确定什么是主表的最佳实践。

任何建议都会再次受到赞赏。

最好的问候

1 个答案:

答案 0 :(得分:2)

如果您经常通过customer_id加入,请输入排序键。  Customer_category将成为一个很好的辅助排序键。    数据应与将要加入的数据一起分发。如果您有按客户ID分发的事实表,则将该分发表作为分发键。   这也取决于您获得了多少新客户。如果销售严重偏向新客户,那么您的数据分发将出现偏差,customer_id将不是一个好的分发密钥。