database - ratio_skew_across_slices 的良好价值 [REDSHIFT]
问题描述
我读了这篇文章:
https://docs.aws.amazon.com/redshift/latest/dg/c_analyzing-table-design.html
它提供了一个查询来分析表设计。对于每个表,它提供了两个指标:
- ratio_skew_across_slices
- pct_slices_populated
在文章中,我读到一个小的值对 ratio_skew_across_slices 有好处。它必须有多小?我发现只有这篇文章给了我一个门槛:
https://dwgeek.com/redshift-table-data-skew-avoid.html/
< 4 很好。我可以接受这个门槛吗?我有一些值为 2.0 和 2.15 的表。
解决方案
通常,表倾斜没有可接受或定义的值。但经验法则是保持小于 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
这里的偏差非常小,但在扫描数据时影响太大。
因此,由您决定特定表的这种偏差是否正常或需要优化。
推荐阅读
- html - 如何将 onClick() 事件添加到图标格式?
- java - MapsId没用过,是自动理解的吗?
- apache-spark - Spark 从新位置读取,保持输出目录相同
- r - 为什么数据表中会出现浮点精度错误
- visual-studio - Blend 2019 中的“没有 MainWindow.xaml 的代码编辑器”错误
- c - 在C中插入二叉搜索树
- python - 如果 Flask 入口点失败,让 Amazon ECS 容器退出
- ubuntu - Apache2 上 SSL 子域配置的重定向失败
- sql - SQL除了选择两个表中的列数不同
- ip - 如何检查 IP 是否正确且没有错误?