Redshift按顺序由DISTKEY分发吗?

时间:2017-01-30 18:48:00

标签: amazon-redshift

我有一个带页面命中的Redshift表,如此

CREATE TABLE hits
(
  user_id INT,
  ts TIMESTAMP,
  page VARCHAR(255)
)
SORTKEY(user_id, ts)
DISTKEY(user_id);

由于我将在user_id上运行一堆窗口函数,我认为通过user_id分发表是个好主意,因此节点不必交换用户数据在能够执行查询之前。

但是用户只在一段时间内处于活动状态并按顺序编号。因此,user_id和time是相关的,因此每当我运行按时间(ts)子集的查询时,如果Redshift也按顺序分配user_id,则会导致偏差。如果它由DISTKEY随机分布,那么问题就不那么严重了。我的问题是:是吗?

(我是Redshift的新手所以所有这些可能只是对事情如何运作的完全误解。在这种情况下,请提前道歉!)

1 个答案:

答案 0 :(得分:2)

Amazon Redshift使用DISTRIBUTION KEY(DISTKEY)的哈希在节点之间分发数据记录。

因此,记录将在3节点集群上以不同于4节点集群的方式进行分发。

如果您正在寻找均匀分布的数据,请使用EVEN分发方法,该方法只是在节点之间均匀地分布记录。 (但是,这对于您的用例来说不太可能是最佳的。)

参见文档: