Amazon redshift 红移:主表的DIST键和SORT键的适当组合是什么?

Amazon redshift 红移:主表的DIST键和SORT键的适当组合是什么?,amazon-redshift,Amazon Redshift,让我问一下什么可以是红移主表的适当distkey(dist样式)和sort key 我们有几个主表,它们的大小、用途和基数不同,现在我们正在验证SORTKEY和DISTKEY的组合是否更合适 例如,在我们的客户主表中有两个主键,在BI查询中经常使用,在其他表中使用join键,如下所示: 前MST_客户(大约700万,SQL Server中的850MB) 一般来说,我可以问在这种情况下什么是最好的组合吗 1.DISTSTYLE KEY & COMPOUND SORTKEY 2.DISTST

让我问一下什么可以是红移主表的适当distkey(dist样式)和sort key

我们有几个主表,它们的大小、用途和基数不同,现在我们正在验证SORTKEY和DISTKEY的组合是否更合适

例如,在我们的客户主表中有两个主键,在BI查询中经常使用,在其他表中使用join键,如下所示:

前MST_客户(大约700万,SQL Server中的850MB)

一般来说,我可以问在这种情况下什么是最好的组合吗

1.DISTSTYLE KEY & COMPOUND SORTKEY
2.DISTSTYLE KEY & SORTKEY
3.DISTSTYLE ALL & INTERLEAVED SORTKEY...
我想如果我们经常在查询计划中找到“DSB-BaskILL”,我们最好考虑“DistSype ALL”。 但仍然不确定主表的最佳实践是什么

如有任何建议,将不胜感激


致以最诚挚的问候

如果您经常通过客户id加入,请将其作为排序键。 Customer_类别将是一个很好的二级排序键。 数据应与将要加入的数据一起分发。如果您有按客户Id分发的事实表,则将其作为分发密钥。
这还取决于你有多少新客户。如果销售严重向新客户倾斜,那么您的数据分布将发生倾斜,客户id将不是一个好的分布密钥。

两个大表之间最常见的连接是什么?什么是你最常用的WHERE子句标准(你总是使用什么?例如日期范围),如果你要将表连接在一起,那么你应该尝试匹配较大表的分发密钥,或者考虑使用DIST所有的小表。您不能孤立地为每个表做出分发决策,您需要考虑将在它们上运行何种类型的查询,并将数据分发到所有节点,以便每个节点完成大致相同的工作量。@Jon Scott非常感谢您的评论,Jon。Customer_ID更频繁地查找并连接到其他事务表,但出于分析目的,我们的BI中仍然使用Customer_类别。所以我想知道是否应该考虑基数。也许频率优先,客户ID应该放在第一位。谢谢你。@Nathan非常感谢你的宝贵意见,Nathan。正如你所说的,我们最好更多地考虑节点上的实际查询和平衡。我们将尝试将密钥匹配到其他表或所有分发。非常感谢你!非常感谢你的指导,内特。听说这两列都可以是很好的排序键,只要它们确定是查询中的搜索键或连接键,我就松了一口气。我们将尝试保持最合适的设置。
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...