1

想象一下,我有一个大型事实表和一个小型且经常更改的连接表。

我的小连接表的全部内容可能适合一个切片。

如何将连接表的副本推送到集群的每个切片(或至少每个节点)上?如果我能做到这一点,我的加入不是会更快吗?

4

2 回答 2

3

Redshift 最近添加了对新分发类型“DISTSTYLE ALL”的支持,它完全符合 OP 的要求。

http://docs.aws.amazon.com/redshift/latest/dg/c_choosing_dist_sort.html

于 2014-01-09T16:19:31.610 回答
0

您可以尝试将 DISTRIBUTION KEY 设置到同一列(在事实表和连接表中) - 这样所有将被连接的行都将落在相同的节点上。

仅当您在连接列中的值分布均匀时,这才有效 - 只有这样数据才会均匀地分布在节点上。

您可以使用查询检查表的数据分布:

select slice, col, num_values, minvalue, maxvalue
from svv_diskusage
where name = '__INSERT__TABLE__NAME__HERE__' and col = 0
order by slice, col;

您希望在 num_values 列中有类似的值。

于 2013-06-07T07:53:07.163 回答