指定分配方式 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

指定分配方式

本部分中指定分配方式的注意事项和建议使用了星型 schema 作为示例。您的数据库设计可能基于星型 schema、星型 schema 的变体或完全不同的 schema。Amazon Redshift 旨在与您选择的任何 schema 设计高效协作。本部分中的原则适用于任何设计 schema。

  1. 为所有表指定主键和外键。

    Amazon Redshift 不强制实施主键和外键约束,但查询优化程序在生成查询计划时会使用它们。如果您设置了主键和外键,则您的应用程序必须维护这些键的有效性。

  2. 根据共同列分配事实数据表及其最大的维度表。

    根据参与最常见联接的数据集的大小(而不只是表的大小)选择最大的维度。如果某张表常使用 WHERE 子句筛选,则只有其部分行参与联接。与贡献更多数据的较小的表相比,此类表对重新分配的影响较小。将维度表的主键和事实数据表对应的外键均指定为 DISTKEY。如果多个表使用相同的分配键,则它们也会与事实数据表并置。事实数据表只能有一个分配键。任何通过其他键联接的表都不能与事实数据表并置。

  3. 为其他维度表指定分配键。

    根据主键或外键分配表,具体视它们与其他表最常见的联接方式而定。

  4. 评估是否将某些维度表更改为使用 ALL 分配。

    如果一个维度表不能与事实数据表或其他重要的联接表并置,您可以通过将整个表分配到所有节点来大大提高查询性能。使用 ALL 分配会使存储空间需求成倍增长,并且会增加加载时间和维护操作,所以在选择 ALL 分配前应权衡所有因素。下面的部分讲解如何通过评估 EXPLAIN 计划来确定 ALL 分配的候选项。

  5. 为剩余的表使用 EVEN 分配。

    如果表大部分为非规范化数据且不参与联接,或如果您无法明确选择采用其他分配方式,请使用 EVEN 分配。

要让 Amazon Redshift 选择适当的分配方式,请不要明确指定分配方式。