Amazon redshift 红移是否按DISTKEY顺序分布?
我有一张红移的表格,上面有页面点击,就像这样Amazon redshift 红移是否按DISTKEY顺序分布?,amazon-redshift,Amazon Redshift,我有一张红移的表格,上面有页面点击,就像这样 CREATE TABLE hits ( user_id INT, ts TIMESTAMP, page VARCHAR(255) ) SORTKEY(user_id, ts) DISTKEY(user_id); 由于我将在user\u id上运行一系列窗口函数,因此我认为通过user\u id分发表是一个好主意,这样节点就不必在执行查询之前交换用户的数据 但用户只在一段时间内处于活动状态,并按顺序编号。因此,用户id和时间是相关的,因此
CREATE TABLE hits
(
user_id INT,
ts TIMESTAMP,
page VARCHAR(255)
)
SORTKEY(user_id, ts)
DISTKEY(user_id);
由于我将在user\u id
上运行一系列窗口函数,因此我认为通过user\u id
分发表是一个好主意,这样节点就不必在执行查询之前交换用户的数据
但用户只在一段时间内处于活动状态,并按顺序编号。因此,用户id和时间是相关的,因此每当我运行按时间(ts
)划分子集的查询时,如果红移也按用户id
顺序分布,这将导致偏移。如果它是由DISTKEY
随机分发的,那么问题就不会那么严重了。我的问题是:是吗
(我不熟悉Redshift,所以所有这些可能只是对总体工作原理的完全误解。在这种情况下,请提前道歉!)Amazon Redshift使用分发密钥(DISTKEY)的散列来在节点之间分发数据记录 因此,记录在3节点集群上的分布将不同于4节点集群 如果要查找均匀分布的数据,请使用
偶数
分布方法,该方法只需在节点之间均匀分布记录。(然而,对于您的用例来说,这不太可能是最佳的。)
见文件:
merge
join。有关merge
vshash
joins的信息,请参见doc,特别是关于连接类型的部分。@JohnRotenstein我们可以引用Redshift使用分发密钥的散列来分发数据记录吗?他们这样做是有道理的,但我在这里的链接中没有看到任何关于这种设计选择的文档。@andrew可能还有其他参考资料,但我在(由Redshift团队的一名开发人员编写的)上找到了一个提及。这也是一篇很棒的文章!