对于VARCHAR列,什么是良好的Amazon Redshift列编码,其中每行包含一个包含很少重复的短(通常为50-100个字符)值,但是对于哪些行,各行之间存在高度相似性? (特别是相同的前缀。)
令人发狂的简洁LZO description让人觉得LZO被单独应用于每个值。在这种情况下,行中不会有共享字典,也很少有共同点。 OTOH,如果将LZO应用于写入磁盘的整个1 MB值块,它将表现良好。
Byte Dictionary听起来只有当价值相同而不是相似时才能节省成本,所以不是一个好的选择。
答案 0 :(得分:0)
每个块都会应用压缩,这意味着LZO
几乎总是VARCHAR
的正确选择。大多数其他替代方案要求值与其他值完全相同(例如BYTEDICT
,RUNLENGTH
),或者是数字(例如DELTA
,MOSTLY8
)。< / p>
VARCHARS
的唯一其他选择是TEXT255
/TEXT32K
,这可能适用于您的用例。它们构建前N个单词的字典(TEXT255
为245,TEXT32K
为变量),并用一个字节索引替换这些单词的出现。如果您的值分享了很多单词,那么TEXT255
可能比LZO
更好。