当两个表具有相同的分配键时,Redshift是否使用相同的键分配?

时间:2019-07-10 09:20:30

标签: sql amazon-web-services amazon-redshift

我有几个表,其中包含字段customer_id。

customer_id并不多,但是基础数据很大(每个客户ID 100s Gb)。

我所有的查询始终以一种或另一种方式使用此customer_id:连接,聚合或过滤。

因此,此字段似乎是分发密钥的最佳候选者。

问题:如果我在所有表上都设置了相同的DISTRIBUTION KEY(customer_id),redshift会知道我想要所有这些表在同一节点上的特定客户的数据吗? 如果是,它将如何决定?只需通过在所有这些表中使用相似的列名? 在我看来,这很奇怪,但是我找不到关于该主题的任何信息。

1 个答案:

答案 0 :(得分:0)

Amazon Redshift将散列DISTKEY列中的值。

例如,如果您的集群总共有4个分片,它将散列键并使用4的模。这将导致任何值为0-3的值。然后,它将使用该值将这些行分布在特定的切片上。

如果节点数(进而是切片)发生了变化,则将为每一行重新计算哈希值。

永远记住基本规则:

  • DISTKEY设置为最常用的列
  • SORTKEY设置为WHERE中最常用的列