本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用列壓縮
壓縮是一種資料行層級作業,可在儲存資料時減少資料的大小。壓縮可節省儲存空間,並降低從儲存體讀取的資料大小,這樣會減少磁碟 I/O 數量,因而改善查詢效能。
自動編碼是表格的預設值。當資料表設定為自動編碼時,Amazon Redshift 會自動管理資料表中所有資料欄的壓縮編碼。如需詳細資訊,請參閱 CREATE TABLE 及 ALTER TABLE。
不過,如果您為資料表中的任何資料行指定壓縮編碼,表格就不會再設定為 ENCODE AUTO。Amazon Redshift 不再自動管理資料表中所有資料行的壓縮編碼。
建立資料表時,您可以手動將壓縮類型或編碼套用至資料表中的資料行。或者,您可以使用 COPY 指令自動分析和套用壓縮。如需詳細資訊,請參閱讓 COPY 選擇壓縮編碼。如要套用自動壓縮的詳細資訊,請參閱利用自動壓縮載入資料表。
注意
我們強烈建議使用 COPY 命令來套用自動壓縮。
如果新資料表與另一個資料表共用相同的資料特性,您可以選擇手動套用壓縮編碼。或者,如果您在測試過程中發現自動壓縮過程中應用的壓縮編碼不適合您的數據,則可能會這樣做。如果您選擇手動套用壓縮編碼,則可以針對已填入的資料表執行 ANALYZE COMPRESSION 命令,並使用結果來選擇壓縮編碼。
若要手動套用壓縮,您可以將個別直欄的壓縮編碼指定為 CREATE TABLE 陳述式的一部分。語法如下。
CREATE TABLE table_name (column_name data_type ENCODE encoding-type)[, ...]
在這裡,編碼類型是從下一節中的關鍵字表採取。
例如,下列陳述式會建立兩欄資料表 PRODUCT。將資料載入至資料表時,不會使用位元組字典編碼 (BYTEDICT) 來壓縮 PRODUCT_ID 資料欄,但會壓縮 PRODUCT_NAME 資料欄。
create table product( product_id int encode raw, product_name char(20) encode bytedict);
在使用 ALTER TABLE 陳述式,將資料欄新增至資料表時,您可以指定該資料欄的編碼。
ALTER TABLE table-name ADD [ COLUMN ] column_name column_type ENCODE encoding-type