壓縮編碼 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

壓縮編碼

壓縮編碼會指定在資料列新增至資料表時,套用至一欄資料值的壓縮類型。

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 資料表停用 ENCODE AUTO 功能,Amazon Redshift 將不再自動管理資料欄的壓縮編碼。所有資料欄都會保留您停用 ENCODE 時的壓縮編碼類型,直到您將其變更或再次啟用 ENCODE AUTO 為止。

下表識別支援的壓縮編碼和支援編碼的資料類型。

編碼類型 CREATE TABLE 和 ALTER TABLE 中的關鍵字 資料類型
Raw (無壓縮) RAW 全部
AZ64 AZ64 SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIMESTAMP、TIMESTAMPTZ
Byte dictionary 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