压缩编码 - Amazon Redshift

压缩编码

c压缩编码指定在向表中添加行时应用到数据值列的压缩类型。

ENCODE AUTO 是表的默认设置。将表设置为 ENCODE AUTO 时,Amazon Redshift 会自动管理表中所有列的压缩编码。有关更多信息,请参阅CREATE TABLEALTER 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