

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 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/)。

# 列压缩，减小存储数据的大小
<a name="t_Compressing_data_on_disk"></a>

*压缩*是可缩减数据存储大小的列级操作。压缩能够节约存储空间并减少从存储读取的数据大小，这种方法可以减少磁盘 I/O 量，因此可提高查询性能。

ENCODE AUTO 是表的默认设置。将表设置为 ENCODE AUTO 时，Amazon Redshift 会自动管理表中所有列的压缩编码。有关更多信息，请参阅[CREATE TABLE](r_CREATE_TABLE_NEW.md)和[ALTER TABLE](r_ALTER_TABLE.md)。

但是，如果为表中的任何列指定压缩编码，则表不再设置为 ENCODE AUTO。Amazon Redshift 不再自动管理表中所有列的压缩编码。

当您创建表时，您可以将压缩类型或*编码*手动应用到表中的列。或者，您可以使用 COPY 命令来自动分析和应用压缩。有关更多信息，请参阅 [让 COPY 选择压缩编码](c_best-practices-use-auto-compression.md)。有关应用自动压缩的详细信息，请参阅[使用自动压缩加载表](c_Loading_tables_auto_compress.md)。

**注意**  
我们强烈建议使用 COPY 命令应用自动压缩。

如果新表具有与另一个表相同的数据特征，则可以选择手动应用压缩编码。或者，如果您在测试时发现在自动压缩期间应用的压缩编码不太适合您的数据，就可以这样操作。如果您选择手动应用压缩编码，则可以对已填充的表运行 [ANALYZE COMPRESSION](r_ANALYZE_COMPRESSION.md) 命令并根据其结果选择压缩编码。

要手动应用压缩，您可以在 CREATE TABLE 语句中为各个列指定压缩编码。语法如下所示。

```
CREATE TABLE table_name (column_name 
data_type ENCODE encoding-type)[, ...]
```

其中，*encoding-type* 取自下一部分中的关键字表。

例如，下面的语句会创建一个包含两列的表 PRODUCT。将数据加载到表中后，PRODUCT\$1ID 列未压缩，但 PRODUCT\$1NAME 列使用字节词典编码 (BYTEDICT) 压缩。

```
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
```

**Topics**
+ [压缩编码](c_Compression_encodings.md)
+ [测试压缩编码](t_Verifying_data_compression.md)