使用列壓縮 - Amazon Redshift

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

使用列壓縮

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

編碼自動是表的默認設置。Amazon Redshift 會自動管理表中所有列的壓縮編碼。您可以為表指定 ENCODE AUTO 選項,以使 Amazon Redshift 能夠自動管理表中所有列的壓縮編碼。如需詳細資訊,請參閱 CREATE TABLEALTER 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