資料欄壓縮以減少儲存資料的大小 - Amazon Redshift

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

資料欄壓縮以減少儲存資料的大小

壓縮是欄層級操作,可降低資料儲存時的大小。壓縮可節省儲存空間,並降低從儲存體讀取的資料大小,這樣會減少磁碟 I/O 數量,因而改善查詢效能。

ENCODE AUTO 是資料表的預設值。當資料表設定為 ENCODE 時AUTO,Amazon Redshift 會自動管理資料表中所有資料欄的壓縮編碼。如需詳細資訊,請參閱 CREATE TABLEALTER TABLE

不過,如果您為資料表中的任何資料欄指定壓縮編碼,則資料表將不再設定為 ENCODE AUTO。Amazon Redshift 不再自動管理資料表中所有資料欄的壓縮編碼。

建立資料表時,您可以手動將壓縮類型或編碼套用至資料表中的資料欄。或者,您可以使用 COPY命令自動分析和套用壓縮。如需詳細資訊,請參閱讓我們COPY選擇壓縮編碼。如要套用自動壓縮的詳細資訊,請參閱利用自動壓縮載入資料表

注意

我們強烈建議使用 COPY命令來套用自動壓縮。

如果新資料表與另一個資料表共用相同的資料特性,您可以選擇手動套用壓縮編碼。或者,如果您在測試過程中發現自動壓縮過程中套用的壓縮編碼不適合您的資料,則可能會這樣做。如果您選擇手動套用壓縮編碼,則可以針對已填入的資料表執行 ANALYZE COMPRESSION 命令,並使用結果來選擇壓縮編碼。

若要手動套用壓縮,您可以為個別資料欄指定壓縮編碼,作為CREATETABLE陳述式的一部分。語法如下。

CREATE TABLE table_name (column_name data_type ENCODE encoding-type)[, ...]

其中 encoding-type 是取自於下節中的關鍵字資料表。

例如,下列陳述式會建立雙欄資料表 PRODUCT。將資料載入資料表時,PRODUCT_ID 資料欄不會壓縮,但會壓縮 PRODUCT_NAME 資料欄,並使用位元組字典編碼 (BYTEDICT)。

create table product( product_id int encode raw, product_name char(20) encode bytedict);

您可以使用 ALTERTABLE命令將資料欄新增至資料表時,指定資料欄的編碼。

ALTER TABLE table-name ADD [ COLUMN ] column_name column_type ENCODE encoding-type