使用Diststyle ALL的桌子在Amazon Redshift中应该有多小?

时间:2016-01-07 18:03:00

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

使用Diststyle ALL的桌子在Amazon Redshift中应该有多小?

它在这里说:http://dwbitechguru.blogspot.com/2014/11/performance-tuning-in-amazon-redshift.html 对于vey小表,redshift应该使用diststyle ALL而不是EVEN或KEY。小有多小?如果我要在查询的where子句中指定行号:select relname, reldiststyle from pg_class我应该指定多少行?

2 个答案:

答案 0 :(得分:5)

这实际上取决于您使用的群集大小。 DISTSTYLE ALL会将表的数据复制到所有节点 - 以减少跨节点的数据传输要求。您可以找到表的大小和Redshift节点的可用大小,如果您能够为每个节点多次复制表,那就去做吧!

此外,如果您需要非常频繁地使用此表加入其他表,例如70%的查询,我相信如果您想要更好的查询性能,那么值得花费空间。

如果表中的连接键在基数方面是相同的,那么您还可以分配该键上的所有表,以便类似的键位于同一节点中,这将避免数据复制。

我建议尝试上面的两个选项,并比较大约10个查询的平均查询运行时间,然后做出决定。

答案 1 :(得分:3)

考虑星型模式后,分布样式“全部” 通常用于维度表。这样做具有加快连接速度的优势,让我们通过一个示例进行说明。如果要按国家/地区获取每种产品的销售数量,则需要将fact_sales与store_id键上的dim_store表结合在一起。 enter image description here

因此,与在启用diststyle时启用改组的缺点相比,在dim_store上设置diststyle all可以使我们并行执行JOIN结果。但是,您可以通过设置distyle auto来让Redshift自动处理最佳的分发样式,有关更多信息,请检查this链接。