压缩编码
c压缩编码指定在向表中添加行时应用到数据值列的压缩类型。
ENCODE AUTO 是表的默认设置。将表设置为 ENCODE AUTO 时,Amazon Redshift 会自动管理表中所有列的压缩编码。有关更多信息,请参阅CREATE TABLE和ALTER TABLE。
但是,如果为表中的任何列指定压缩编码,则表不再设置为 ENCODE AUTO。Amazon Redshift 不再自动管理表中所有列的压缩编码。
使用 CREATE TABLE 时,为表中的任何列指定压缩编码时会禁用 ENCODE AUTO。如果禁用了 ENCODE AUTO,Amazon Redshift 会自动为您未指定 ENCODE 类型的列分配压缩编码,如下所示:
-
为定义为排序键的列分配 RAW 压缩。
-
为定义为 BOOLEAN、REAL 或 DOUBLE PRECISION 数据类型的列分配 RAW 压缩。
-
定义为 SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIMESTAMP 或 TIMESTAMPTZ 数据类型的列分配了 AZ64 压缩。
-
定义为 CHAR 或 VARCHAR 数据类型的列分配了 LZO 压缩。
在创建表后,您可以使用 ALTER TABLE 更改表的编码。如果您使用 ALTER TABLE 禁用 ENCODE AUTO,Amazon Redshift 将不再自动管理列的压缩编码。所有列都将保留您禁用 ENCODE AUTO 时的压缩编码类型,直到您更改它们或再次启用 ENCODE AUTO。
下表列出了支持的压缩编码和支持该编码的数据类型。
编码类型 | 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 |