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

使用说明

限制和配额

创建表时,请考虑以下限制。

  • 集群中按节点类型的最大表数有限制。有关更多信息,请参阅 Amazon Redshift 集群管理指南中的限制

  • 表名的最大字符数为 127。

  • 可在单个表中定义的列的最大数目为 1,600。

  • 可在单个表中定义的 SORTKEY 列的最大数目为 400。

列级设置和表级设置摘要

可在列级或表级设置若干属性和设置。在某些情况下,在列级或表级设置属性或约束的效果相同。在其他情况下,它们会产生不同的结果。

下面的列表汇总了列级和表级设置:

DISTKEY

无论是在列级设置还是在表级设置,效果是相同的。

如果在列级或表级设置 DISTKEY,则 DISTSTYLE 必须设置为 KEY 或者根本不设置 DISTSTYLE。只能在表级设置 DISTSTYLE。

SORTKEY

如果在列级进行设置,则 SORTKEY 必须为单个列。如果在表级设置 SORTKEY,则一个或多个列可构成复合或交错复合排序键。

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Amazon Redshift 不支持更改列的区分大小写配置。将新列附加到表中时,Amazon Redshift 会使用默认值区分大小写。在附加新列时,Amazon Redshift 不支持 collate 关键词。

有关如何使用数据库排序规则创建数据库的信息,请参阅CREATE DATABASE

有关 COLLATE 函数的信息,请参阅COLLATE 函数

UNIQUE

在列级别,可将一个或多个键设置为 UNIQUE;UNIQUE 约束分别应用于每个列。如果在表级设置 UNIQUE,则一个或多个列可构成复合 UNIQUE 约束。

PRIMARY KEY

如果在列级进行设置,则 PRIMARY KEY 必须为单个列。如果在表级设置 PRIMARY KEY,则一个或多个列可构成复合主键。

FOREIGN KEY

无论是在列级设置还是在表级设置 FOREIGN KEY,效果是相同的。在列级别,语法为 REFERENCES reftable [ ( refcolumn )]。

分配传入数据

如果传入数据的哈希分配方案与目标表的哈希分配方案匹配,则在加载数据时,没有实际必要的数据物理分配。例如,如果为新表设置分配键并从相同键列上分配的另一个表中插入数据,则使用相同的节点和切片就地加载数据。不过,如果源表和目标表都设置为 EVEN 分配,则数据将重新分配到目标表。

宽表

您也许能够创建很宽的表,但无法对表执行查询处理,例如 INSERT 或 SELECT 语句。具有宽度固定的列(例如 CHAR)的表的最大宽度为 64KB - 1(即 65535 字节)。如果表包含 VARCHAR 列,则表可以具有更大的声明宽度,而不会返回错误,因为 VARCHARS 列不会将其完全声明的宽度计入计算出的查询处理限制。针对 VARCHAR 列的有效查询处理限制将因大量因素而异。

如果表对于插入或选择操作来说太宽,您将收到以下错误。

ERROR: 8001 DETAIL: The combined length of columns processed in the SQL statement exceeded the query-processing limit of 65535 characters (pid:7627)