哪个选项最适合选择列压缩编码 [COPY VS ANALYZE COMPRESSION]

Posted

技术标签:

【中文标题】哪个选项最适合选择列压缩编码 [COPY VS ANALYZE COMPRESSION]【英文标题】:Which option is best for selecting column compression encoding [ COPY VS ANALYZE COMPRESSION ] 【发布时间】:2018-08-29 16:51:24 【问题描述】:

场景:我必须更改现有表的列编码

a) 如果我执行 ANALYZE COMPRESSION table_name ---这种方法建议对所有列使用 ZSTD 压缩,包括 SORT-KEY 列。

b) 我使用现有表的 DDL 创建了新表并使用复制命令来获取列压缩编码(将数据加载到空表时复制选择列压缩编码)---COPY 命令建议所有列使用 LZO,包括SORT-KEY 列。

问题:

哪种方法是正确的或优化的? SORT-KEY 列压缩不好,所以 SORT-KEY 列的 ZSTD 会提高性能吗?

【问题讨论】:

应根据您的工作量进行微调。您是否通过docs.aws.amazon.com/redshift/latest/dg/… 了解如何在调整前后衡量性能? 非常感谢 Nikita 我正在使用 Redshift 的顾问。 我总是发现analyze compression推荐zstd,但它高估了好处! (根据我的经验,与 lzo 几乎没有区别) 【参考方案1】:

ANALYZE COMPRESSION 只看基于存储的压缩效果,不考虑其他因素。

在许多情况下,SORT KEY 的第一列压缩得很好,通常会被过滤(where 子句中的谓词)。如果由于某种原因您从未对列进行过滤(可能是合并连接),则可以压缩 SORT KEY。

我们建议解压缩 SORT KEY 的第一列的原因是,当您对与您正在扫描的其他列相比高度压缩的列使用范围受限扫描进行过滤时,可能会导致性能略有下降。

【讨论】:

非常感谢托尼,这回答了我的第一个问题。为了为现有表选择列压缩编码以节省一些空间并提高性能,哪种方法最好 ANALYZE COMPRESSION table name VS Create new table from an existing table's DDL and Let COPY command select column compression encoding ? 这里是详细问题***.com/questions/45093279/…【参考方案2】:

https://forums.aws.amazon.com/thread.jspa?threadID=252583 https://discourse.snowplowanalytics.com/t/make-big-data-small-again-with-redshift-zstd-compression/1280

可能上述线程有助于它。

【讨论】:

非常感谢穆昆德。但是我没有得到答案。

以上是关于哪个选项最适合选择列压缩编码 [COPY VS ANALYZE COMPRESSION]的主要内容,如果未能解决你的问题,请参考以下文章

哪种算法最适合 Burrows-Wheeler 变换?

Brave vs Google Chrome:哪个浏览器更适合你?

软件测试VS软件开发哪个好?怎么选择

Unity3.5 导入音频文件

Visibility vs Offstage vs Opacity,哪个最适合从小部件树中隐藏孩子?

Node.js vs Ruby on Rails:哪个最适合Web开发?