ANALYZE COMPRESSION - Amazon Redshift

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

ANALYZE COMPRESSION

執行壓縮分析並產生報告,當中針對分析的資料表提供建議的壓縮編碼。報告中會針對每個資料欄提供相較於現行編碼,可能減少的磁碟空間估計值。

語法

ANALYZE COMPRESSION [ [ table_name ] [ ( column_name [, ...] ) ] ] [COMPROWS numrows]

參數

table_name

您可以分析特定資料表的壓縮,包括臨時資料表。您可以利用結構描述名稱限定資料表。您可以選擇性的指定 table_name 來分析單一資料表。如果您未指定 table_name 值,目前連接的資料庫中所有資料表都會加以分析。您無法在單一 ANALYZE COMPRESSION 陳述式中指定多個 table_name

column_name

若您指定 table_name,則您也可以在資料表中指定一個或多個資料欄 (括號內以資料欄分隔的清單)。

COMPROWS

資料列數,做為壓縮分析的樣本大小。分析是以每個資料配量中的列為對象。例如,假設您指定 COMPROWS 1000000 (1,000,000),而系統總共包含 4 個分割,則每個分割最多讀取和分析 250,000 列。如果不指定 COMPROWS,則每個分割的樣本大小預設為 100,000。如果 COMPROWS 的值小於每個分割預設的 100,000 列,則會自動提高到預設值。但是,如果資料表中的資料量不足,無法產生有意義的樣本,則壓縮分析不會產生建議。如果 COMPROWS 數字大於資料表中的資料列數,ANALYZE COMPRESSION 命令仍會繼續,並對所有可用的資料列進行壓縮分析。

numrows

資料列數,做為壓縮分析的樣本大小。numrows 可接受的範圍是介於 1000 到 1000000000 (1,000,000,000) 之間的數字。

使用須知

執行 ANALYZE COMPRESSION 可根據資料表內容的樣本,取得資料欄編碼機制的建議。ANALYZE COMPRESSION 是建議使用的工具,並且不要修改資料表的資料欄編碼。您可以透過重新建立資料表,或建立具有相同結構描述的新資料表,套用建議的編碼。利用適當的編碼機制重新建立未經壓縮的資料表,可大幅減少在磁碟上佔用的空間。此方法節省了磁碟空間,並提高 I/O 繫結工作負載的查詢效能。

ANALYZE COMPRESSION 會略過實際的分析階段,並直接在指定為 SORTKEY 的任何資料欄上傳回原始編碼類型。這樣做的原因是,當 SORTKEY 資料欄的壓縮程度比其他資料欄高出許多時,限制範圍的掃描執行效果可能較差。

ANALYZE COMPRESSION 會取得獨佔的資料表鎖定,防止同時對資料表進行讀取和寫入操作。只有在資料表閒置時才執行 ANALYZE COMPRESSION 命令。

範例

下列範例只顯示 LISTING 資料表中資料欄的編碼和估計減少的百分比:

analyze compression listing; Table | Column | Encoding | Est_reduction_pct --------+----------------+----------+------------------ listing | listid | delta | 75.00 listing | sellerid | delta32k | 38.14 listing | eventid | delta32k | 5.88 listing | dateid | zstd | 31.73 listing | numtickets | zstd | 38.41 listing | priceperticket | zstd | 59.48 listing | totalprice | zstd | 37.90 listing | listtime | zstd | 13.39

以下範例會分析 SALES 資料表中的 QTYSOLD、COMMISSION 和 SALETIME 資料欄。

analyze compression sales(qtysold, commission, saletime); Table | Column | Encoding | Est_reduction_pct ------+------------+----------+------------------ sales | salesid | N/A | 0.00 sales | listid | N/A | 0.00 sales | sellerid | N/A | 0.00 sales | buyerid | N/A | 0.00 sales | eventid | N/A | 0.00 sales | dateid | N/A | 0.00 sales | qtysold | zstd | 67.14 sales | pricepaid | N/A | 0.00 sales | commission | zstd | 13.94 sales | saletime | zstd | 13.38