分配方式 - Amazon Redshift

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

分配方式

创建表时,您可以指定四种分配方式之一:AUTO、EVEN、KEY 或 AUTO。

如果未指定分配方式,Amazon Redshift 使用自动 (AUTO) 分配。

AUTO 分配

在自动 (AUTO) 分配方式下,Amazon Redshift 基于表数据大小分配最佳分配方式。例如,Amazon Redshift 最初向小型表分配的是 ALL 分配,然后在表变大时更改为 EVEN 分配。当表从 ALL 分配更改为 EVEN 分配时,存储利用率可能略有变化。几秒钟后,分配更改将在后台进行。

当您将“溶出度”设置为“自动”时, Amazon Redshift 可能会更改表数据的分布,以采用基于Key的分布样式。

要查看应用于表的分配方式,请查询 PG_CLASS_INFO 系统目录视图。有关更多信息,请参阅 查看分配方式。) 如果未使用 CREATE TABLE 语句指定分配方式,Amazon Redshift 将应用自动 (AUTO) 分配。

EVEN 分配

不管任意特定列中的值是什么,领导节点都以轮询方式向所有切片分配行。当表不参与联接或无法明确地在 KEY 分配和 ALL 分配之间做出选择时,即可使用 EVEN 分配。

KEY 分配

根据一列中的值分配行。领导节点会将匹配的值放置到同一个节点切片上。如果基于联接键分配一对表,领导节点会根据联接列中的值在切片上并置行,使共同列的匹配值实际存储在一起。

ALL 分配

向每个节点分配整个表的副本。EVEN 分配或 KEY 分配只将表中的部分行放置在每个节点上,而 ALL 分配则确保为该表参与的所有联接并置每一行。

ALL 分配需要以集群中节点数量为倍数的存储空间,因此,它需要长得多的时间来加载、更新或插入数据到多个表中。ALL 分配只适用于移动相对缓慢的表;即更新不频繁、不广泛的表。由于在查询过程中重新分配小表的成本很低,因此将小维度表定义为 DISTSTYLE ALL 没有显著好处。

注意

当您为某个列指定分配方式后,Amazon Redshift 会在集群级别处理数据分配。Amazon Redshift 不需要、也不支持数据库对象中的数据分区概念。您不需要创建表空间或为表定义分区方案。

在特定场景中,表创建完毕后,您可更改其分配方式。有关更多信息,请参阅 ALTER TABLE。) 对于在创建表之后无法更改其分配方式的场景,您可以重新创建表并使用深层复制来填充新表。有关更多信息,请参阅执行深层复制