VARCHAR的良好编码,跨行

时间:2015-08-24 13:09:22

标签: encoding amazon-redshift

对于VARCHAR列,什么是良好的Amazon Redshift列编码,其中每行包含一个包含很少重复的短(通常为50-100个字符)值,但是对于哪些行,各行之间存在高度相似性? (特别是相同的前缀。)

令人发狂的简洁LZO description让人觉得LZO被单独应用于每个值。在这种情况下,行中不会有共享字典,也很少有共同点。 OTOH,如果将LZO应用于写入磁盘的整个1 MB值块,它将表现良好。

Byte Dictionary听起来只有当价值相同而不是相似时才能节省成本,所以不是一个好的选择。

1 个答案:

答案 0 :(得分:0)

每个块都会应用压缩,这意味着LZO几乎总是VARCHAR的正确选择。大多数其他替代方案要求值与其他值完全相同(例如BYTEDICTRUNLENGTH),或者是数字(例如DELTAMOSTLY8)。< / p>

VARCHARS的唯一其他选择是TEXT255/TEXT32K,这可能适用于您的用例。它们构建前N个单词的字典(TEXT255为245,TEXT32K为变量),并用一个字节索引替换这些单词的出现。如果您的值分享了很多单词,那么TEXT255可能比LZO更好。