压缩编码
c压缩编码指定在向表中添加行时应用到数据值列的压缩类型。
ENCODE AUTO 是表的默认设置。Amazon Redshift 会自动管理表中所有列的压缩编码。您可以为表指定 ENCODE AUTO 选项,以使 Amazon Redshift 能够自动管理表中所有列的压缩编码。有关更多信息,请参阅CREATE TABLE和ALTER TABLE。
但是,如果为表中的任何列指定压缩编码,则表不再设置为 ENCODE AUTO。Amazon Redshift 不再自动管理表中所有列的压缩编码。
如果您为表中的任何列指定压缩编码,或者您没有为表指定 ENCODE AUTO 选项,Amazon Redshift 会自动将压缩编码分配给您未指定压缩编码的列,如下所示:
-
为定义为排序键的列分配 RAW 压缩。
-
为定义为 BOOLEAN、REAL 或 DOUBLE PRECISION 数据类型的列分配 RAW 压缩。
-
定义为 SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIMESTAMP 或 TIMESTAMPTZ 数据类型的列分配了 AZ64 压缩。
-
定义为 CHAR 或 VARCHAR 数据类型的列分配了 LZO 压缩。
下表列出了支持的压缩编码和支持该编码的数据类型。
| 编码类型 | CREATE TABLE 和 ALTER TABLE 中的关键字 | 数据类型 |
|---|---|---|
| Raw(无压缩) | RAW | 所有 |
| AZ64 | AZ64 | SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIMESTAMP、TIMESTAMPTZ |
| 字节词典 | BYTEDICT | SMALLINT、INTEGER、BIGINT、DECIMAL、REAL、DOUBLE PRECISION、CHAR、VARCHAR、DATE、TIMESTAMP、TIMESTAMPTZ |
| Delta | DELTA DELTA32K |
SMALLINT、INT、BIGINT、DATE、TIMESTAMP、DECIMAL INT、BIGINT、DATE、TIMESTAMP、DECIMAL |
| LZO | LZO | SMALLINT、INTEGER、BIGINT、DECIMAL、CHAR、VARCHAR、DATE、TIMESTAMP、TIMESTAMPTZ、SUPER |
| Mostlyn | MOSTLY8 MOSTLY16 MOSTLY32 |
SMALLINT、INT、BIGINT、DECIMAL INT、BIGINT、DECIMAL BIGINT、DECIMAL |
| Run-length | RUNLENGTH | SMALLINT、INTEGER、BIGINT、DECIMAL、REAL、DOUBLE PRECISION、BOOLEAN、CHAR、VARCHAR、DATE、TIMESTAMP、TIMESTAMPTZ |
| 文本 | TEXT255 TEXT32K |
仅 VARCHAR 仅 VARCHAR |
| Zstandard | ZSTD | SMALLINT、INTEGER、BIGINT、DECIMAL、REAL、DOUBLE PRECISION、BOOLEAN、CHAR、VARCHAR、DATE、TIMESTAMP、TIMESTAMPTZ、SUPER |