复合排序键与排序键



让我问关于红移排序键的其他问题。 我们计划使用 WHERE 语句中经常使用的列设置排序键。

到目前为止,我们系统的最佳组合似乎是: 偶数 + 复合排序键 + 压缩列(第一个排序键列除外(

只是想知道哪个更好,简单的 SORTKEY 或 复合排序键 对于我们的 BI 表,可以根据用户的分析进行多样化的查询。

例如,我们在几个查询的 WHERE 语句中根据频率设置复合排序键,如下所示。

COMPOUND SORTKEY
(
PURCHASE_DATE <-- set as first sort key since it's date column.
STORE_ID,
CUTOMER_ID,
PRODUCT_ID
)

但有时在实际查询中只能查询"PRODUCT ID",而不能使用其他列出的排序键进行查询,也不能以不同于复合键顺序的方式进行查询。

在这种情况下,我可以问"复合排序键"可能是无用的还是简单的排序键可以更有效......?

如果您能告诉我您的想法和经历,我将不胜感激。

Amazon Redshift 的简单规则如下:

  • 在最常与JOIN一起使用的列上使用 DISTKEY
  • 对最常与WHERE一起使用的列使用 SORTKEY

您是正确的,仅当PURCHASE_DATE包含在WHERE中时,才会使用上述复合排序键。

另一种方法是使用交错排序键,它为许多列提供相同的权重,并且可以在WHERE中经常使用不同字段的地方使用。但是,交错排序键的VACUUM速度要慢得多,很少值得使用。

因此,目标是在大多数查询中使用 SORTKEY,但不要太担心其他查询,除非您遇到一些特定的性能问题。

请参阅:红移排序键 - 选择最佳排序样式 |赫沃博客

你的复合排序键对我来说看起来很明智。重要的是要了解 Redshift 排序键不是使用或不使用的索引排序键用于物理排列磁盘上的数据。

查询优化器通过在查询执行期间查看每个块的"区域映射"(最小值和最大值(来"使用"排序键。所有列都会发生这种情况,无论它们是否在排序键中

复合排序键中的辅助列在减少必须从磁盘扫描的数据方面仍然非常有效,尤其是在列值为低基数时。

有关检查排序键有效性的查询,请参阅前面的示例:我的排序键是否正在使用?

请查看我们的有效设计表指南:"Amazon Redshift 工程的高级表设计手册"。本指南讨论了交错排序键的正确用法,但请注意,它们只应在非常特定的情况下使用。

最新更新