首页 > 解决方案 > ratio_skew_across_slices 的良好价值 [REDSHIFT]

问题描述

我读了这篇文章:

https://docs.aws.amazon.com/redshift/latest/dg/c_analyzing-table-design.html

它提供了一个查询来分析表设计。对于每个表,它提供了两个指标:

在文章中,我读到一个小的值对 ratio_skew_across_slices 有好处。它必须有多小?我发现只有这篇文章给了我一个门槛:

https://dwgeek.com/redshift-table-data-skew-avoid.html/

< 4 很好。我可以接受这个门槛吗?我有一些值为 2.0 和 2.15 的表。

标签: databaseperformanceamazon-redshift

解决方案


通常,表倾斜没有可接受或定义的值。但经验法则是保持小于 4。

为了理解这一点,让我们看一个例子。

您有一个包含 150 行的表,并且集群有 3 个节点。

  • 节点 1 - 100 行
  • 节点 2 - 48 行
  • 节点 3 - 2 行

偏斜是如何计算的?

节点上的最大行数与节点上的最少行数之间的比率。

100/2 = 50. So the skew here is 50.

但它是一张很小的桌子,即使倾斜度很高,也没有影响,但想想一张大桌子。

  • 节点 1 - 50000000
  • 节点 2 - 30000000
  • 节点 3 - 40000000

Skew is 1.67

这里的偏差非常小,但在扫描数据时影响太大。

因此,由您决定特定表的这种偏差是否正常或需要优化。


推荐阅读