2015-08-24 27 views
1

什麼是適用於VARCHAR列的良好Amazon Redshift列編碼,其中每行包含一個很短(通常爲50-100個字符)的值,其中包含很少的重複,但其中有一個較高的度行之間的相似性? (特別是相同的前綴。)VARCHAR的良好編碼,各行之間具有相似性

令人瘋狂的簡潔LZO description聽起來像LZO單獨應用於每個值。在這種情況下,行之間將沒有共享字典,並且通用性不大。 OTOH,如果將LZO應用於寫入磁盤的整個1 MB值,它將表現良好。

Byte Dictionary聽起來好像只在值相同而不是相似時纔會節省,所以不是一個好的選擇。

+0

基於前100,000行,Amazon Redshift'ANALYZE COMPRESSION'命令自動爲每列推薦壓縮設置。這是什麼暗示這個特定的數據? –

回答

0

壓縮應用於每個塊,這意味着LZO幾乎總是VARCHAR的正確選擇。大多數其他替代方案要求值與其他值完全相同(例如BYTEDICT,RUNLENGTH),或者是數字(例如DELTAMOSTLY8)。

VARCHARS的唯一另一種替代方法是TEXT255/TEXT32K,它可能適用於您的用例。他們構建前N個詞的字典(TEXT255爲245,TEXT32K爲變量),並用一個字節的索引替換這些詞的出現。如果你的數值分享了很多單詞,那麼TEXT255可能比LZO更好。

相關問題