

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# ANALYZE COMPRESSION
<a name="r_ANALYZE_COMPRESSION"></a>

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

## 語法
<a name="r_ANALYZE_COMPRESSION-synopsis"></a>

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

## Parameters
<a name="r_ANALYZE_COMPRESSION-parameters"></a>

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

 *column\$1name*   
若您指定 *table\$1name*，則您也可以在資料表中指定一個或多個資料欄 (括號內以資料欄分隔的清單)。

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

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

## 使用須知
<a name="r_ANALYZE_COMPRESSION_usage_notes"></a>

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

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

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

## 範例
<a name="r_ANALYZE_COMPRESSION-examples"></a>

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

```
analyze compression listing;
  
  Table  |     Column     | Encoding | Est_reduction_pct 
---------+----------------+----------+-------------------
 listing | listid         | az64     | 40.96
 listing | sellerid       | az64     | 46.92
 listing | eventid        | az64     | 53.37
 listing | dateid         | raw      | 0.00
 listing | numtickets     | az64     | 65.66
 listing | priceperticket | az64     | 72.94
 listing | totalprice     | az64     | 68.05
 listing | listtime       | az64     | 49.74
```

以下範例會分析 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    | az64     | 83.06
 sales | pricepaid  | N/A      | 0.00
 sales | commission | az64     | 71.85
 sales | saletime   | az64     | 49.63
```