運行長度編碼 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

運行長度編碼

Runlength 編碼會將連續重複的值取代為由值和連續出現次數 (執行長度) 組成的符記。唯一值的個別字典是針對磁碟上資料欄值的每個區塊而建立的。(一個 Amazon Redshift 磁碟區塊佔用 1 MB。) 此編碼最適合於資料值通常連續重複的資料表,例如,依那些值排序資料表時。

例如,假設大型維度資料表中的資料欄具有可預測的小型網域,例如具有少於 10 個可能值的 COLOR 資料欄。即使未對數據進行排序,這些值可能會在整個表中按長序列排列。

不建議在指定為排序索引鍵的任何資料欄上套用運行長度編碼。當區塊包含類似的列數時,限制範圍的掃描執行效果會更好。如果排序索引鍵欄位的壓縮比相同查詢中的其他欄位高出許多,限制範圍的掃描執行效果可能較差。

下表使用 COLOR 資料欄範例來顯示運行長度編碼如何運作。

原始資料值 原始大小 (位元組) 壓縮值 (符記) 壓縮大小 (位元組)
Blue 4 {2,藍色} 5
Blue 4 0
Green 5 {3,綠色} 6
Green 5 0
Green 5 0
Blue 4 {1,Blue} 5
Yellow 6 {4,Yellow} 7
Yellow 6 0
Yellow 6 0
Yellow 6 0
合計 51 23