Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

选择列压缩类型

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

默认情况下,Amazon Redshift 以原始、未压缩的格式存储数据。创建表时,您可以向表中的列手动应用压缩类型或编码,或者,您也可以使用 COPY 命令自动分析和应用压缩。有关应用自动压缩的详细信息,请参阅使用自动压缩加载表

注意

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

对于以下情况,您可以选择手动应用压缩编码:1) 新表具有与另一个表相同的数据特征;2) 在测试时,您发现在自动压缩期间应用的压缩编码不太适合您的数据。如果您选择手动应用压缩编码,则可以对已填充的表运行 ANALYZE COMPRESSION 命令并根据其结果选择压缩编码。

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

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

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

例如,下面的语句会创建一个拥有两个列的表 PRODUCT。将数据加载到表中后,PRODUCT_ID 列未压缩,但 PRODUCT_NAME 列使用字节词典编码 (BYTEDICT) 压缩。

Copy
create table product( product_id int encode raw, product_name char(20) encode bytedict);

表创建后,即无法更改列的压缩编码。您可以使用 ALTER TABLE 命令在向表中添加列时指定其编码。

Copy
ALTER TABLE table-name ADD [ COLUMN ] column_name column_type ENCODE encoding-type