【问题标题】:How small should a table using Diststyle ALL be in Amazon Redshift?在 Amazon Redshift 中使用 Diststyle ALL 的表应该有多小?
【发布时间】:2016-04-12 06:04:27
【问题描述】:

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

这里写着: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 我应该指定多少行?

【问题讨论】:

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


    【解决方案1】:

    通过考虑星型模式,所有分布样式通常用于维度表。这样做的好处是可以加快连接速度,让我们通过一个例子来解释一下。如果我们想按国家/地区获得每种产品的销售数量,我们需要将 fact_sales 与 store_id 键上的 dim_store 表连接起来。

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

    【讨论】:

      【解决方案2】:

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

      此外,如果您需要非常频繁地将其他表与该表连接起来,例如在 70% 的查询中,我相信如果您想要更好的查询性能,那么这个空间是值得的。

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

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

      【讨论】:

      • 还取决于您的数据集和使用情况。如果您有 >50M 行的表,则小表可以是
      猜你喜欢
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2014-01-06
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多