在Amazon Redshift中创建数据表时,您可以指定各种encodings,例如MOSTLY32或BYTEDICT或LZO。这些是在磁盘上存储柱状值时使用的压缩。
我想知道我的编码选择是否会对查询执行时间产生影响。例如,如果我创建一个BYTEDICT列,那么当涉及SELECT,GROUP BY或FILTER时,它会对LZO产生影响吗?
答案 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命令中即可。