ランレングスエンコード - Amazon Redshift

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

ランレングスエンコード

ランレングスエンコードは、連続して繰り返される値を、値と連続発生数 (実行の長さ) から成るトークンに置き換えます。ディスク上の列値のブロックごとに、一意の値の個別のディクショナリが作成されます (An Amazon Redshift ディスク ブロックは1 MBを占有します。) このエンコードは、データ値が連続して繰り返されることが多いテーブルに最適です。たとえば、テーブルがこれらの値でソートされている場合です。

たとえば、大きなディメンションテーブルの列に、予測どおりに小さなドメイン (10 個未満の可能値を持つ COLOR 列など) がある場合、データがソートされなくても、これらの値はテーブル全体にわたって長いシーケンスになる可能性が高くなります。

ソートキーとして指定された列に、ランレングスエンコードを適用することは推奨されません。範囲が制限されたスキャンは、ブロックに同様の数の行が含まれる場合にパフォーマンスが向上します。ソートキー列が、同じクエリ内の他の列よりもかなり高度に圧縮される場合、範囲が制限されたスキャンはパフォーマンスが低下する可能性があります。

次の表は、COLOR 列の例を使用して、ランレングスエンコードがどのように機能するかを示しています。

元のデータ値 元のサイズ (バイト) 圧縮値 (トークン) 圧縮サイズ (バイト)
Blue 4. {2,Blue} 5*
Blue 4. 0
Green 5* {3,Green} 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