如何在 Amazon Redshift 中設計欄編碼?
我想在 Amazon Redshift 中設計欄編碼。
簡短描述
若要在 Amazon Redshift 中設定欄編碼,請使用 ENCODE AUTO 和 ANALYZE COMPRESSION 命令。如需詳細資訊,請參閱壓縮編碼。
如果對排序索引鍵欄套用壓縮,則查詢效能可能會下降,因為它會為某些查詢類型新增區塊掃描。如果您手動為資料表指定編碼類型,請為排序索引鍵欄設定 RAW 編碼。
如需詳細資訊,請參閱Amazon Redshift 資料表設計最佳做法。
解決方法
使用 ENCODE AUTO 最大化欄壓縮
使用 ENCODE AUTO 自動最佳化 Amazon Redshift 表中的欄壓縮。預設情況下,ENCODE AUTO 會持續分析叢集的工作負載模式,以協助最大化查詢效能並減少手動壓縮管理的需求。
如果您在資料表中的任何欄上指定了編碼類型,則會關閉 ENCODE AUTO。
若要檢查某個資料表是否已啟用 ENCODE AUTO,請使用下列查詢:
SELECT "table", encoded FROM svv_table_info WHERE "table" = 'table_name';
**注意:**將 table_name 替換為您資料表的名稱。
執行 ANALYZE COMPRESSION 命令以查看資料表的分析
若要執行壓縮分析並產生針對資料表建議的壓縮編碼報告,請執行 ANALYZE COMPRESSION 命令:
ANALYZE COMPRESSION lineitem;
**注意:**將 lineitem 替換為您的資料表名稱。
輸出範例:
Table | Column | Encoding | Est_reduction_pct ----------+-----------------+----------+------------------- lineitem | l_orderkey | raw | 0.00 lineitem | l_partkey | az64 | 33.34 lineitem | l_suppkey | az64 | 45.46 lineitem | l_linenumber | az64 | 87.88 lineitem | l_quantity | az64 | 80.00 lineitem | l_extendedprice | az64 | 60.32 lineitem | l_discount | az64 | 90.77 lineitem | l_tax | az64 | 90.77 lineitem | l_returnflag | zstd | 80.99 lineitem | l_linestatus | zstd | 86.86 lineitem | l_shipdate | az64 | 61.15 lineitem | l_commitdate | az64 | 61.26 lineitem | l_receiptdate | az64 | 61.15 lineitem | l_shipinstruct | zstd | 96.50 lineitem | l_shipmode | bytedict | 88.89 lineitem | l_comment | zstd | 70.36 lineitem | l_dummy | zstd | 99.97 (17 rows)
**注意:**對於每一欄,報告會提供與 RAW 編碼相比的潛在磁碟空間減少量估算值。
(選用) 為了幫助您了解 ANALYZE COMPRESSION 命令的輸出結果,您可以查看資料表定義。執行以下命令:
SHOW TABLE lineitem;
**注意:**將 lineitem 替換為您的資料表名稱。
輸出範例:
Show Table DDL statement ------------------------------------------------- CREATE TABLE public.lineitem ( l_orderkey integer ENCODE raw, l_partkey integer ENCODE raw, l_suppkey integer ENCODE raw, l_linenumber integer ENCODE raw, l_quantity numeric(15,2) ENCODE raw, l_extendedprice numeric(15,2) ENCODE raw, l_discount numeric(15,2) ENCODE raw, l_tax numeric(15,2) ENCODE raw, l_returnflag character(1) ENCODE raw, l_linestatus character(1) ENCODE raw, l_shipdate date ENCODE raw, l_commitdate date ENCODE raw, l_receiptdate date ENCODE raw, l_shipinstruct character(25) ENCODE raw, l_shipmode character(10) ENCODE raw, l_comment character varying(44) ENCODE raw, l_dummy character varying(10) ENCODE raw ) DISTSTYLE AUTO SORTKEY ( l_orderkey ); (1 row)
ANALYZE COMPRESSION 是一種建議性工具,不會修改資料表的欄編碼。若要套用建議的編碼,請重新建立資料表,或執行 ALTER TABLE 命令:
ALTER TABLE lineitem ALTER COLUMN l_dummy ENCODE example_compression;
**注意:**將 lineitem 替換為您的資料表名稱,將 l_dummy 替換為您的欄名稱,並將 example_compression 替換為您的壓縮編碼。
相關資訊
- 語言
- 中文 (繁體)
