Amazon Redshift
数据库开发人员指南 (API 版本 2012-12-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

选择列压缩类型

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

创建表时,您可以向表中的列手动应用压缩类型或编码,或者,您也可以使用 COPY 命令自动分析和应用压缩。有关应用自动压缩的详细信息,请参阅使用自动压缩加载表

注意

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

对于以下情况,您可以选择手动应用压缩编码:1) 新表具有与另一个表相同的数据特征;2) 在测试时,您发现在自动压缩期间应用的压缩编码不太适合您的数据。如果您选择手动应用压缩编码,则可以对已填充的表运行 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