Redshift列编码会影响查询执行速度吗?

时间:2014-06-17 15:35:50

标签: amazon-redshift

在Amazon Redshift中创建数据表时,您可以指定各种encodings,例如MOSTLY32或BYTEDICT或LZO。这些是在磁盘上存储柱状值时使用的压缩。

我想知道我的编码选择是否会对查询执行时间产生影响。例如,如果我创建一个BYTEDICT列,那么当涉及SELECT,GROUP BY或FILTER时,它会对LZO产生影响吗?

3 个答案:

答案 0 :(得分:7)

是。使用的压缩编码转换为磁盘存储量。通常,存储越低,查询性能越好。

但是,哪种编码对您更有利,取决于您的数据类型及其分布。没有保证LZO总是优于Bytedict,反之亦然。根据我的经验,我通常会在目标表中加载一些示例数据。比做分析压缩。现在无论Redshift建议什么,我都会去。这对我有用。

答案 1 :(得分:3)

亚马逊实际上发布了一个python脚本,可以自动将其应用于您的数据库。您可以在https://github.com/awslabs/amazon-redshift-utils/blob/master/src/ColumnEncodingUtility/analyze-schema-compression.py

找到此脚本

答案 2 :(得分:0)

有点迟,但对于看这里的人来说可能有用:

亚马逊现在可以决定使用最佳压缩(Loading Tables with Automatic Compression),如果您正在使用COPY命令加载表格,并且您的表格中没有定义现有压缩。

您只需将COMPUPDATE ON添加到COPY命令中即可。