使用列压缩 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用列压缩

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

ENCODE AUTO 是表的默认设置。将表设置为 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)[, ...]

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

例如,下面的语句会创建一个包含两列的表 PRODUCT。将数据加载到表中后,PRODUCT_ID 列未压缩,但 PRODUCT_NAME 列使用字节词典编码 (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