Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

选择最佳分配方式

在执行查询时,查询优化程序根据执行联接和聚合的需要将行重新分配到计算节点。选择表分配方式的目的是通过在执行查询前将数据放在需要的位置来最大程度地减小重新分配步骤的影响。

  1. 根据共同列分配事实数据表和一个维度表。

    事实数据表只能有一个分配键。任何通过其他键联接的表都不能与事实数据表并置。根据联接频率和联接行的大小选择一个要并置的维度。将维度表的主键和事实数据表对应的外键指定为 DISTKEY。

  2. 根据筛选的数据集的大小选择最大的维度。

    只有用于联接的行需要分配,因此需要考虑筛选后的数据集的大小,而不是表的大小。

  3. 在筛选结果集中选择基数高的列。

    例如,如果您在日期列上分配了一个销售表,您可能获得非常均匀的数据分配,除非您的大多数销售都是季节性的。但是,如果您通常使用范围受限谓词进行筛选以缩小日期期间的范围,则大多数筛选行将位于有限的一组切片上并且查询工作负载将偏斜。

  4. 将一些维度表改为使用 ALL 分配。

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

有关选择分配方式的更多信息,请参阅教程:优化表设计选择数据分配方式