想象一下,我有一个大的事实表和一个小而频繁变化的连接表。
我的小连接表的全部内容可能都适合切片。
如何将我的连接表的副本推送到群集的每个切片(或至少每个节点)?如果我能做到这一点,我的连接不会更快吗?
答案 0 :(得分:3)
Redshift最近增加了对新分发类型“DISTSTYLE ALL”的支持,该分发类型完全符合OP的要求。
http://docs.aws.amazon.com/redshift/latest/dg/c_choosing_dist_sort.html
答案 1 :(得分: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列中具有类似的值。