Redshift COPY 自动压缩

Posted

技术标签:

【中文标题】Redshift COPY 自动压缩【英文标题】:Redshift COPY automatic compression 【发布时间】:2015-12-21 09:51:14 【问题描述】:

我不清楚在 Redshift 中使用 COPY 命令时自动压缩是如何工作的。

文档说:

默认情况下,只要您对空目标表运行 COPY 命令并且所有表列都具有 RAW 编码或没有编码,COPY 命令就会应用自动压缩。

这是否意味着对于持续复制原始数据的主表,数据将仅在此表第一次发生 COPY 时被压缩,以后不再压缩?似乎我误解了一些没有意义的原因,它会以这种方式工作。

谢谢

【问题讨论】:

【参考方案1】:

创建表时,基本上需要为每一列设置一个编码(压缩)类型。但是,正如您从 AWS 文档中引用的那样,有一个例外,当数据被复制到空表中时,Redshift 会自动分析并设置 所有列的最佳编码以及复制的数据。然后后续的数据会按照设置的编码进行压缩。

因此,您的问题的答案是“否”。通过任一方式设置编码(压缩)后,后续项目将被压缩。

【讨论】:

【参考方案2】:

我确认正志的回答。但请注意:

自动压缩分析需要加载数据中有足够的行(每个切片至少 > 100,000 行)才能进行采样。

如果您对小批量运行 COPY,您的表将设置为无编码。所有后续的 COPY 调用都不会改变这一点。您可以稍后通过运行表的深层副本来解决此问题。

【讨论】:

以上是关于Redshift COPY 自动压缩的主要内容,如果未能解决你的问题,请参考以下文章

Redshift 副本从分析创建不同的压缩编码

Redshift COPY 并自动创建表?

使用 COPY 功能自动将数据加载到 Redshift

用于复制的 Redshift ROLLBACK

使用 Amazon Redshift 进行维度建模是不是可行

无法使用 aws nodejs sdk 创建 Redshift 表