在导入数据时,Redshift可以对列上的数据做压缩,这样有两个好处:1. 减少磁盘空间使用;2. 在查询数据时,减少读取数据的大小,从而提高I/O性能。 而且CPU擅长压缩和解压缩,并不会消耗太多性能
在执行COPY命令时,Redshift使用ENCODE AUTO
压缩方式,它会对所有的列做压缩;如果对某一列指定了压缩方式,则整个表都不再使用ENCODE AUTO
方式,它的语法如下:
CREATE TABLE table_name (column_name data_type ENCODE encoding-type)[, ...]
# 例如
create table product(
product_id int encode raw, # 没有做压缩
product_name char(20) encode bytedict); # 使用bytedict方式压缩
在执行自动压缩时,Redshift会在后台执行以下动作:
COMPROWS
参数,默认是100000条)